rails4 5.12 Using partials to clean up duplication in views

来源:互联网 发布:淘宝活动报名大全 编辑:程序博客网 时间:2024/06/08 08:30

我们的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

0 0