Ruby on Railsで、インプットタグの数を変えることができるフォームを作っています。
配列でパラメーターを送信しDBに.newで書き込む処理を作りたいのですが、配列の取得がうまく出来ずeachによる繰り返しも思うように動いてくれません。
テーブル('price[p_tbl][]')の部分に関しては.joins(',')で取得した値をカンマ区切りで1つのフィールドに収めたいです。
知識不足のため、拙いコードなのですが下記に現在の状態を載せております。
お手隙の方がいらっしゃいましたら、アドバイスを頂けると助かります。
よろしくお願い致します。
View
1 <div class="inner"> 2 3 <%= form_for(@price, url: {controller: 'hoge', action: 'new' }) do |form| %> 4 5 <div class="box p20"> 6 <div class="btn-close"><span></span></div> 7 <div class="groop input-box"> 8 <p class="fs-m">料金名</p> 9 <%= text_field_tag 'price[p_ttl][]', "", {class: "l", placeholder: "例:レッスン料(月謝)"} %> 10 </div> 11 12 <div class="groop input-box"> 13 <p class="fs-m">料金説明</p> 14 <%= text_field_tag 'price[p_cont][]', "", {class: "l", placeholder: "説明文"} %> 15 </div> 16 17 <div class="groop input-box bd-none"> 18 <p class="fs-m">料金表</p> 19 <table class="price-tbl"> 20 <tr> 21 <td> 22 <%= text_field_tag 'price[p_tbl][]', "", {class: "w100", placeholder: "タイトル"} %> 23 </td> 24 <td> 25 <%= text_field_tag 'price[p_tbl][]', "", {class: "w100", placeholder: "¥0"} %> 26 <i class="icon remove"></i> 27 </td> 28 </tr> 29 </table> 30 </div> 31 32 <p id="price-btn" class="flex3 w100"><i class="icon add"></i>行を追加する</p> 33 34 </div> 35 36 <div class="add-box"> 37 <p class="flex3 w100"><i class="icon add"></i>新しいテーブルを追加</p> 38 </div> 39 40 <div class="center"> 41 <button class="w40 smh-w60 btn1 mt30"> 42 <%= form.submit "この内容で保存" %> 43 </button> 44 </div> 45 </div> 46 <% end %>
controller
1 def price 2 @price = Price.new 3 end 4 5 def price_new 6 @price = params[:price] 7 @price.each do |i| 8 @price = Price.new( 9 p_ttl: params[:p_ttl], 10 p_cont: params[:p_cont], 11 p_tbl: params[:p_tbl].joins(',') 12 ) 13 @price.save 14 end 15 redirect_to("/") 16 end
追記
下記のような動的に追加できるフォームを配列で送る際に
html
1<div> 2 <%= text_field_tag "hoge[hash1][name][]" %> 3 <%= text_field_tag "hoge[hash1][tag][]" %> 4</div> 5<button>追加ボタン</button>
Parameters
1hoge = { 2 "hash1" => { name: "名前1", tag: "タグ1" }, 3 "hash2" => { name: "名前2", tag: "タグ2" }, 4 "hash3" => { name: "名前3", tag: "タグ3" }, 5} 6 7もしくは、 8 9hoge = { 10 "hash1" => { "name" => "名前1", "tag" => "タグ1" }, 11 "hash2" => { "name" => "名前2", "tag" => "タグ2" }, 12 "hash3" => { "name" => "名前3", "tag" => "タグ3" }, 13}
このような形で送ることが出来れば、1件ずつの書き込みに成功しそうです。
どなたか、お分かりになられる方おりましたらご教示ください。
よろしくお願い致します。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。