有没有办法在show.html.erb中使用simple_form

时间:2011-05-06 11:19:46

标签: ruby-on-rails-3 simple-form

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

编码所有字段

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

2 个答案:

答案 0 :(得分:3)

渲染部分时,您应该发送show.html.erb的{​​{1}}构建器变量:

form_for

答案 1 :(得分:0)

我遇到了同样的问题。

这可能是一个骇人听闻的解决方案-但遇到麻烦时,它确实可以很好地发挥作用。

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

我传入了一个已禁用变量,以简单地重新使用表单代码并隐藏“提交”按钮。

我的显示页面:

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

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

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

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

任何反馈都非常感谢!