###実現したいこと
type='checkbox'のinputにハッシュの値を入れて、Controllerに投げたいです。
しかし、下記のname=<%= @posts[] %>でエラーが発生します
view
1<%= form_tag "/houses/#{@house.id}/add" do %> 2 <% @posts.each do |post| %> 3 <div class="book-checkbox"> 4 <div class='check-container'> 5 <input type='checkbox' name=<%= posts[] %> id=<%= post.id %>></input> 6 <label for=<%= post.id %>></label> 7 </div> 8 </div> 9 <% end %> 10<%= submit_tag "送信" %> 11<% end %>
Controller
1def add 2 @house = House.find_by(id: params[:id]) 3 @posts= Post.find(params[:posts]) 4 @house.posts << @posts 5 redirect_to("/") 6end
Error
1undefined local variable or method `posts' for #<#<Class:0x00007f8d0a8ae9d8>:0x00007f8d11de8500> 2Did you mean? post
余談ですが、一切のデザインを行なっていないcheckboxですと、以下のようにして、無事に配列取得できます。
View
1<%= check_box_tag "posts[]", post.id %>
ぜひアドバイスのほど、よろしくお願い致します。
###追記
以下のように、変更しましたところ、ページ表示ではエラー発生しなくなりました。
しかし、コントローラーに送った際にエラーが発生します。
view
1<input type='checkbox' name=posts[] id=<%= post.id %>></input>
Error
1Couldn't find Post with 'id'=on
###追記2
2つ選択した状態で、送信されたパラメーターです。
Parameters
1{"utf8"=>"✓", "authenticity_token"=>"Vj2Ch/wa06ok5xamhzKWEOghvu1EXxZDZ1k1rIKE679O4Gybl8B/yCF7FINDpLePbkickrv9nzUmlnKbSVgyPQ==", "posts"=>["on", "on"], "commit"=>"送信", "id"=>"2"}
デザインのないcheck_box_tagではうまくいったので、以下のように挑戦しましたがうまく行きませんでした。
<%= check_box_tag "posts[]", post.id, :id => post.id %>
→すでにクリックされた状態で、クリックしても非クリックできないです。
<%= check_box_tag "posts[]", :id => post.id %>
→アンクリックの状態ですが、chackboxの選択ができない(クリックに反応しない)
回答1件
あなたの回答
tips
プレビュー