私のフォームでは、セッションの値に応じて、特定のビューが順番にユーザーに表示されます。ユーザーが前のフォームに戻った場合を除いて、これはすべてうまく機能しています。フォームにはセッションからのデータが事前に入力されていません。
ローカル DB を何にも使用していないため、私のモデルは ActiveModel を拡張しません。
<%= form_tag do %>
<%= field_set_tag do %>
<label for="form_firstname">First name:</label>
<%= text_field "form", "firstname" %>
<label for="form_surname">Surname:</label>
<%= text_field "form", "surname" %>
<label for="form_dob_3i">Date of Birth:</label>
<%= date_select("form", "dob", :start_year => 1912, :end_year => 1994, :order => [:day, :month, :year], :prompt => { :day => 'Day', :month => 'Month', :year => 'Year' }) %>
# and many other fields including radio/check/text/select ...
# next / back buttons...
<% end %>
<% end %>
私の質問は、セッションからのデータを記憶し、フィールドに事前入力するフォームを取得するにはどうすればよいですか?
テキスト フィールドの場合、次のように値属性を追加できますが、これが最善の方法かどうかはわかりません。
<label for="form_address_line_1">Address:</label>
<%= text_field "form", "address_line_1", :value => session[:quote]['policyholder']['address_line_1'] %>
また、これを無線フィールドなどに適用する方法もわかりません。
<%= radio_button_tag 'form[homeowner]', 'yes', :checked => 'checked' if session[:quote]['policyholder']['homeowner'] = 'yes' %>
<label for="form_homeowner_yes">Yes</label>
<%= radio_button_tag 'form[homeowner]', 'no', :checked => 'checked' if session[:quote]['policyholder']['homeowner'] = 'no' %>
<label for="form_homeowner_no">no</label>