collection check boxesのドキュメントが分かりにくいです。パラメータの説明は次のとおりです。Railsのcollection_check_boxesがフォームから結果を取得する
collection_check_boxes(object, method, collection, value_method, text_method, options = {}, html_options = {}, &block) public
戻り値は、オブジェクトのクラスのメソッドの既存の戻り値の収集のために箱のタグを確認してください。インスタンスオブジェクトのメソッド呼び出しから返された値が選択されます。呼び出しメソッドがnilを返す場合、選択は行われません。
"オブジェクト"(最初の引数)は何であるかわかりません。私は2つの異なる可能性を試して、違う失敗をしました。
<%= collection_check_boxes(:wiki, :collaborating_user_ids, User.all, :id, :name) do |b| %>
<li>
<%= b.check_box %>
<%= b.label %>
</li>
<% end %>
私のアプリがwikiの編集をサポートしているということです。私はwikiのオーナーがチェックボックスを使って共同編集者のリストにユーザーを追加したり削除したりすることができるようにしたいと考えています(少数のユーザーがいる場合に限り実用的です)。 collaborating_user_ids
は、協力者の現在のリストを返すWiki
のインスタンスメソッドです。現在の共同編集者をチェックして、すべてのユーザーの名前を表示します。
これはディスプレイ上で動作しますが、このフォームから返されたparams
を調べると、チェックされたチェックボックスは何も表示されません。一方、シンボル:wiki
をインスタンス変数@wiki
に置き換えると、チェックボックスはwikiに関連付けられたparams
に表示されますが、最初はチェックボックスが正しく設定されていません。
collection_check_boxes
の最初のパラメータは実際にはわかりませんが、私が見たすべての例ではシンボルが表示されています。