我花了相当多的时间在simple_form中制作表单。它有96个字段!我把表单分成了不同的步骤。每一步都是局部的。
现在我要准备show.html.erb
的表格。我原以为呈现相同的部分只会向用户显示表单,但当然,如果我试图这样做,它会给我一个错误:
undefined local variable or method `f' for #<#<Class:0xb6d8712c>:0xb6d85f20>
我的大部分偏导数的代码如下:
<%= f.input :name, :label=>"Preferred Name",:label_html => {:class => "form_label"}%>
我只是想利用我所做的工作,而不是再次为show.html.erb
编码所有字段
这里有什么我可以使用的技巧吗?
您应该发送show.html.erb
的form_for
构建器变量时渲染部分:
#show.html.erb
<%= simple_form_for @something do |builder| %>
<%= render :partial => 'somepartial', :locals => { :f => builder } %>
...
<% end %>
#_somepartial.html.erb
<%= f.input :name, :label=>"Preferred Name",:label_html => {:class => "form_label"} %>
我也遇到了同样的问题。
这可能是一个粗糙的解决方案-但在紧急情况下它真的很好用。
这是我的_form
部分…
<%
disabled ||= false
%>
<%= simple_form_for incident_report do |f| %>
<%= f.input :first_name, disabled: disabled %>
<%= f.input :last_name, disabled: disabled %>
<%= f.input :email, disabled: disabled %>
<%= f.input :phone, disabled: disabled %>
<% unless disabled %>
<%= f.button :submit %>
<% else %>
Put show page content here!
<% end %>
<% end %>
我传入了一个禁用的变量来简单地重用表单代码并隐藏提交按钮。
My Show Page:
<%= render 'form', incident_report: @incident_report, disabled: true %>
新建页面(和平常一样…)
<h1>New Report</h1>
<%= render 'form', incident_report: @incident_report %>
在编辑和显示页面之间切换,为您提供美观一致的UI。
任何反馈是非常感谢!