Railsでアプリ開発を行っています。
「newアクションのビューのフォームを使ってユーザーに値を入力してもらい、submitボタンでcreateアクションを実行し、値を保存完了」というモデルの基本の流れにおいて、実現したいことがあります。
それは、フォーム(つまりモデルのカラム)が複数(大量)あり、それらを1つのビューで一度に表示するのではなく、「次へ」ボタンを押して、次のフォームへと画面遷移していって、最後のフォームまで満たしたらsubmit、というようにすることです。
Javascriptを使って、「次へ」ボタンを押したら現在のフォームを消して次のフォームを作っていくという手が浮かびますが、あまりきれいではないと思います。。。
入力したフォームの値を保持したまま次のフォームの画面へと移るにはどうすればいいでしょうか?
実現したいHTMLコードを、Usersモデルの名前・年齢・自己紹介を例にして下記に記述します。(すべてusers/new.html.erbとして読んで下さい)
始めは名前のフォーム
<%= form_for (@user) do |f| %> 名前を入力してください。 <%= f.text_field :name %> <% end %> <button>次へ</button>
「次へ」ボタンを押すと↓↓
年齢フォーム
<%= form_for (@user) do |f| %> 年齢を入力してください。 <%= f.text_field :age %> <% end %> <button>戻る</button> <!-- 戻る機能も付けたいです。 --> <button>次へ</button>
「次へ」ボタンを押すと↓↓
自己紹介フォーム
<%= form_for (@user) do |f| %> 自己紹介を入力してください。 <%= f.text_area :self_introduction %> <% end %> <button>戻る</button> <%= f.submit "登録する" =>
で、「登録する」ボタンでcreateを実行。というような流れにしたいです。詳細なコードでなくても、どのような方法を用いればいいのかだけでも教えて頂けると助かります。
2/18追記
それぞれのビューを部分テンプレート化(例えば年齢フォームを_age_form.html.erbに)し、「次へ」ボタンにonclick属性を入れて、クリックすると部分テンプレートの親要素(id=rapper)の中身を変更するようにしてみましたが、
<button onclick="$('#rapper').html('<%= render "age_form" %>');">次へ</button>
と書くと、ボタンの中にそのまま部分テンプレートが書き込まれてしまいます。この方法は不可能でしょうか?
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。