3

変数のオプションとして使用したい項目のリストがあります。それらは配列としてモデルに保存され、form_for のリストとして表示されます。使っていました

f.select(:var_name, [["option1"],["option2"],["option3"]], {}, {multiple: "multiple"})

これは、モデルに保存するのに最適です。しかし、フォームに戻ると、何も選択されていません (変数にすべて保存されていても)。その後、フォームを再度送信すると、空の配列が渡されます。正しく保存する唯一の方法は、フォームを表示するたびに必要なものを再選択することです。それらを複数選択ボックスに渡すにはどうすればよいですか?

4

2 に答える 2

0

今日また作業を開始したところ、機能していました。どのような変更が行われたかはわかりませんが、サーバーを再起動する必要があった可能性があります。それはまだのように見えます

f.select(:name, [[" "],["option"],["option2"],["option3"]], {}, {:multiple => true})

したがって、このコードではなかったはずです。さらに、フォームの先頭は次のようになります

form_for(@model_name) do |f|

それも変わっていません。

とにかく、それは今動作します。ありがとう!

于 2012-02-15T13:52:24.543 に答える
0

choicesあなたの問題はあなたのパラメータに起因すると思います。おそらく [option,id] マッピングの配列が必要です:

f.select(:person_id, Person.all.collect {|p| [ p.name, p.id ] }, {}, { :multiple => true })
于 2012-02-14T20:15:16.933 に答える