Railsアプリにsimple_formがあり、一部のフィールドにURLパラメーターを事前入力したいと考えています。
URLの例は次のとおりです。
http://localhost:3000/surveys/new?phone=8675309
これにより、次のコードを使用して電話フィールドに正しく事前入力されます。
<%= simple_form_for @survey, :html => { :class => 'form-horizontal' } do |f| %>
<%= f.input :state, :required => true %>
<%= f.input :zip, :required => true %>
<%= f.input :phone, :required => true, :input_html => { :value => params['phone'] } %>
<% end %>
問題は、フォームが必須フィールドなしで送信された場合、フォームは再ロードされますが、電話の入力値は保持されないことです。
フォームがzipの値なしで送信された場合、赤いURLの検証エラーでリロードされたページは次のようになります。
http://localhost:3000/surveys
たとえば、状態フィールドは正しいが郵便番号がない場合、フォームはzipが必要であるというエラーメッセージとともに再読み込みされます。
状態値は保持されますが、電話は保持されません。
電話のf.inputの:value =>params['phone']と関係があると思います。
とにかく、simple_formに初期ロード時にURLパラメーターを入力し、サーバー側の検証が失敗した場合にそれらの値を保持することができますか?
どうもありがとう。