fields_for を使って、シンボルを渡してあげると、 <form/>
の内側に任意のフォーム入力要素を作れるようです
(以下 rails generate scaffold user
で一括作成した内容で書き記します)
slim
1/ app/views/users/_form.html.slim
2= form_for @user do |f|
3 / 実際に利用するときは 日付の範囲をコントローラ側から受け取り、each の中で出力させる
4 = f.fields_for :events do |n|
5 .field
6 = n.label "date_#{Date.today.to_s}", Date.today.to_s
7 = n.radio_button :date, Date.today.to_s
8 .field
9 = n.label "date_#{Date.today.advance(days: 1).to_s}", Date.today.advance(days: 1).to_s
10 = n.radio_button :date, Date.today.advance(days: 1).to_s
11
12 .field
13 = f.label :name
14 = f.text_field :name
15 .actions = f.submit
html
1<!-- http://localhost:3000/users/new -->
2<div class="field">
3 <label for="user_events_date_2017-06-14">2017-06-14</label>
4 <input value="2017-06-14" name="user[events][date]" id="user_events_date_2017-06-14" type="radio">
5</div>
6<div class="field">
7 <!-- 上と同様に、ここには一日後の日付のラジオボタンとラベルが表示される -->
8</div>
console
1# Users#create アクションで受け取ったパラメータの値
2<ActionController::Parameters {
3 "utf8"=>"✓",
4 "authenticity_token"=>"...",
5 "user"=>{"events"=>{"date"=>"2017-06-15"},
6 "name"=>"f"},
7 "commit"=>"Create User",
8 "controller"=>"users",
9 "action"=>"create"} permitted: false>
ruby
1# app/controllers/user_controller.rb
2# class ....
3 def create
4 # ...
5 params.dig(:user, :events, :date) # => "2017-06-15"
6 # ...
7 end
8# end
詳細はわかりませんが たとえば: 日付の範囲を配列に収め、そのサイズ分だけ fields_for を使用して、その中で ○☓△ の選択肢を用意してあげると、コントローラ側からパラメータ値としてデータを取り出せるようになるのではないでしょうか
簡単に調べてみましたが、何か参考になれば幸いです
Link
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/06/20 11:50