【ラジオボタンをeachで設置】戻るボタンを押した時に選択したラジオボタンがセットされるようにする

  • はじめに
  • 実装過程
    • 条件
    • 試行錯誤
  • まとめ
  • 感想

はじめに

タイトルがわかりにくいですね。。。

説明するとざっくりこんな感じです。

1.入力ページに選択肢(ラジオボタン)があるとします。

2.入力が完了して入力内容を確認するページに飛んで、この時に入力内容を修正したいなと思います。

3.戻るボタンを押して、入力ページに戻ります。

4.入力ページに戻った時に選択したラジオボタンがセットされるようにします。(例えばラジオボタンが三つあったとして、一つ目を選択したら戻った際に一つ目にセットされる、二つ目を選択されてたら戻った際に二つ目がセットされる)

動きとしてはこんな感じです。

Image from Gyazo

コードはこのようになります

= form_for @test, url: confirm_test_path do |f|
  = f.label :name
  %br/
  = f.text_field :name, placeholder: "名前を入力してください"
  - Course.where(id: 1..3).each_with_index do |course, i|
    - if params[:test]
     # 戻るボタンを押した際に選択したラジオボタンに値をセットする
      = f.radio_button :course_id, "#{course.id}", checked: "#{course.id == params[:test][:course_id].to_i ? 'checked' : '' }", id: "course-#{course.id}"
      %label.radio{for: "course-#{course.id}"}= course.fee_i18n
    - else
     # 初めて入力画面に移動した時に適用される
      = f.radio_button :course_id, "#{course.id}", checked: "#{i == 0 ? 'checked' : '' }", id: "course-#{course.id}"
      %label.radio{for: "course-#{course.id}"}= course.fee_i18n
  = f.submit "確認画面に進む"
続きを読む