在show.html.erb中有使用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编码所有字段

这里有什么我可以使用的技巧吗?

您应该发送show.html.erbform_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。

任何反馈是非常感谢!

相关内容

  • 没有找到相关文章

最新更新