4

我花了相当多的时间在 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

我可以在这里使用任何技巧吗?

4

2 回答 2

3

渲染部分时,您应该发送 buildershow.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"} %>
于 2011-05-06T15:44:31.593 回答
0

我遇到了同样的问题。

这可能是一个 hacky 解决方案 - 但在果酱中它工作得非常好。

这是我的_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 %>

我传入一个禁用的var 以简单地重新使用表单代码并隐藏提交按钮。

我的展示页面:

<%= render 'form', incident_report: @incident_report, disabled: true %>

新页面(与正常相同..)

<h1>New Report</h1>
<%= render 'form', incident_report: @incident_report %>

在编辑和显示页面之间切换为您提供精美一致的 UI。

非常感谢任何反馈!

于 2020-11-04T03:11:17.650 回答