2

私のフォームでは、セッションの値に応じて、特定のビューが順番にユーザーに表示されます。ユーザーが前のフォームに戻った場合を除いて、これはすべてうまく機能しています。フォームにはセッションからのデータが事前に入力されていません。

ローカル 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>
4

1 に答える 1

0

ビューで戻るボタンを使用して、前のフォームをレンダリングし、リダイレクトしないようにします...したがって、redirect_to ではなくこれを試してください。render 'your_controller_action'

于 2012-08-25T05:40:19.670 に答える