Rails在没有ActiveRecord / ActiveModel的情况下记住表单细节



在我的表单中,根据会话中的值,按顺序向用户显示特定视图。这一切都很好用,除非用户返回到以前的表单,表单没有预先填充会话中的数据。

我的模型没有扩展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'

相关内容

最新更新