在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;对
导致错误的原因以及如何修复错误?感谢。
答案 0 :(得分:2)
分配给变量f
的表单超出了部分范围。要使用它,您需要将f
作为本地值传递给您的部分:
<%= render 'material_form', f: f%>
partials上的rails文档非常有用;如果你想深入了解,你还可以深入了解action renderer文档。