Rails:如何将代码从视图移动到部分文件

时间:2016-09-03 23:14:12

标签: ruby-on-rails

在edit.html.erb

 <% if material.look %>
        <%= form_for material do |f|%>
        <% if material.approval = "1" %>
          <%= f.hidden_field :date,value: Date.today %>
        <% end %>
        <%= f.hidden_field :approval_amount, value: 0 %>
        <%= f.hidden_field :approval_amount_percentage, value: 0 %>
        <%= f.submit 'yes' %>
    <% end %>
    <%= form_for material do |f|%>
        <%= f.hidden_field :approval_amount, value: 0 %>
        <%= f.hidden_field :approval_amount_percentage, value: 0 %>
        <%= f.submit 'no' %>
        <% end %>
    <% end %>

两种形式的代码是重复的,所以我想将它们移动到部分文件中, 在_material_form.html.erb中,我这样编码

<%= f.hidden_field :approval_amount, value: 0 %>
<%= f.hidden_field :approval_amount_percentage, value: 0 %>

在edit.html.erb中,我修改了重复的代码

   <% if material.look %>
        <%= form_for material do |f|%>
        <% if material.approval = "1" %>
          <%= f.hidden_field :date,value: Date.today %>
        <% end %>
        <%= render 'material_form'%>
        <%= f.submit 'yes' %>
    <% end %>
    <%= form_for material do |f|%>
        <%= render 'material_form'%>
        <%= f.submit 'no' %>
        <% end %>
    <% end %>

但是,它显示错误

  

未定义的局部变量或方法`f&#39;对

导致错误的原因以及如何修复错误?感谢。

1 个答案:

答案 0 :(得分:2)

分配给变量f的表单超出了部分范围。要使用它,您需要将f作为本地值传递给您的部分:

<%= render 'material_form', f: f%>

partials上的rails文档非常有用;如果你想深入了解,你还可以深入了解action renderer文档。

相关问题