ユーザーが複数のチェックボックス(同じ名前の値を持つ)をチェックしてコントローラにポストバックしたときの状況を処理する「邪魔な方法」が不思議です。Railsでは、複数のチェックボックスをどのように扱うか?
複数の項目を選択したかどうかをチェックする方法を、その後、ID値に分割さなど
ユーザーが複数のチェックボックス(同じ名前の値を持つ)をチェックしてコントローラにポストバックしたときの状況を処理する「邪魔な方法」が不思議です。Railsでは、複数のチェックボックスをどのように扱うか?
複数の項目を選択したかどうかをチェックする方法を、その後、ID値に分割さなど
これを行うための最も簡単な方法は、アレイになるために、これらのチェックボックスを設定することです。
HTML:
<input type="checkbox" name="tag_ids[]" value="1" />
<input type="checkbox" name="tag_ids[]" value="2" />
<input type="checkbox" name="tag_ids[]" value="3" />
コントローラー:。
tag_ids = params[:tag_ids]
(もちろん、あなたはおそらくビューでform_for
ベースのヘルパーを使用していると思いますので、タグIDを大量に割り当てるこの
checked
パラメータを使用する場合は、次のように記述する必要があります。
check_box_tag "tag_ids[]", 1, true
ではなく、この:
check_box_tag 'tag_ids[]', 1, true
それは把握する私にしばらく時間がかかったが、私はそれが誰かを助けることを願っています。
ここで、一重引用符と二重引用符の違いは何ですか? –
f.check_box :tag_ids, {multiple: true}, 1, nil
が正しい答えです:あなたの入力は、アレイに配置することを可能にするオプション:ここで
が理由で、「真の複数が」そこにあります。 multiple:trueオプションがない場合、これは許可されません。
ここでは、複数の都市に複数のクリーナーを置くことができるビューとコントローラーの例を示します。このhttps://kolosek.com/rails-join-table/
を行う
とコントローラ
にあなたは「道のレール」に完全なチュートリアルを見つけることができ、ユーザーがチェックボックスを選択解除した場合はどうなりますか? tag_ids []は空の配列として送信されますか? –
@Joe Van Dyk:HTTPリクエストで 'tag_ids []'という名前の値が指定されていない場合、Railsは 'params'に' tag_ids'を入れるとは考えません。例えば、 'params [:tag_ids] || = []' – Matchu
このHTMLを取得するには、 'fcheckbox :: tag_ids、{multiple:true}、1、nil'を実行することができます。 'nil'は"隠された0入力なし "を意味します。この種のものは、文書化されていません。 –