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

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"} %>
于 2011-05-06T15:44:31.593 に答える
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が得られます。

フィードバックは大歓迎です!

于 2020-11-04T03:11:17.650 に答える