`
jiajie0531
  • 浏览: 27605 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

rails4 5.12 Using partials to clean up duplication in views

 
阅读更多

我们的edit页面和new页面非常相似,事实上,他们共同共享着相同的代码用来显示form。 让我们用一个局部视图来剔除重复的代码。按照惯例,局部文件的前缀是一下划线。

 

ps. 想了解更多的局部文件信息,可以参考Layouts and Rendering in Rails

 

创建一个新的文件app/views/articles/_form.html.erb,编辑如下的内容:

 

<%= form_for @article do |f| %>

<% if @article.errors.any? %>

<div id="error_explanation">

<h2><%= pluralize(@article.errors.count, "error") %> prohibited

this article from being saved:</h2>

<ul>

<% @article.errors.full_messages.each do |msg| %>

<li><%= msg %></li>

<% end %>

</ul>

</div>

<% end %>

<p>

<%= f.label :title %><br>

<%= f.text_field :title %>

</p>

 

<p>

<%= f.label :text %><br>

<%= f.text_area :text %>

</p>

 

<p>

<%= f.submit %>

</p>

<% end %>

对于 form_for 所声明的都是和原来的一模一样的。我们使用这个更短的,更简单的 form_for 声明 去替代其他的form,这么做的原因是@article是一个对于完整RESTful路由集的资源映射,Rails能够推断出来哪个URI或者哪个方法能够被使用。更多的关于form_for用法,可以参考Resource-oriented style.

现在,让我们来修改视图app/views/articles/new.html.erb,用到这个新的局部视图,重新编辑它:

<h1>New article</h1>

 

<%= render 'form' %>

 

<%= link_to 'Back', articles_path %>

同样的处理这个视图:app/views/articles/edit.html.erb

<h1>Edit article</h1>

 

<%= render 'form' %>

 

<%= link_to 'Back', articles_path %>

 

原文http://guides.rubyonrails.org/getting_started.html#using-partials-to-clean-up-duplication-in-views

—end

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics