在我的表单中,用户会根据会话中的值按顺序显示特定视图。这一切都很好,除了当用户返回到以前的表单时,表单没有预先填充会话中的数据。
我的模型没有扩展 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>