在我的表单中,根据会话中的值,按顺序向用户显示特定视图。这一切都很好用,除非用户返回到以前的表单,表单没有预先填充会话中的数据。
我的模型没有扩展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>
在视图中使用后退按钮来呈现以前的表单,而不是重定向到它...所以试试这个而不是redirect_to:render 'your_controller_action'