2010/1/23 土曜日

Rails1.2で複数選択フォームで初期値が選ばれているようにするには

カテゴリー: — gabon @ 14:45:41

Rails1.2で複数選択フォームを作るには、
ビューで、collection_selectでmultipleを指定し、nameを出すところに、kaitous[kaitou_id][]と書いてあげれば、指定したモデルのidと名前で選択肢を出してくれ、コントローラに複数選択した値が渡されます。
<code>
<select id =”hoge”  name=”kaitous[kaitou_id][]” multiple=”multiple”>
  <option value=”1″>回答A</option>
  <option value=”2″>回答B</option>
</select>(ctrlキーで複数選択)<br>
</code>

新規作成の場面では上記でよいのですが、編集をするときに、既に選んでいたものが選択されておらず悩みました。

結局、ビューでコードを直接書きました
配列fugaに選択した結果が入っているとして、、、

<code>
<select id=”hoge” name=”kaitous[kaitou_id][]” multiple=”multiple”> <option value=”"></option>
<% Kaitou.find(:all).each do |r| %>
     <option value=”<%= r.id %>” <%= fuga.include?(r.id.to_s) ? “selected=\”selected\”" : ” %> ><%= r.kaitou %>
     </option>
<% end %>
</select>(ctrlキーで複数選択)<br>
</code>

ほんとうはもっと上手なヘルパの使い方があるのかと思いますが、まずは解決です。

HTML convert time: 0.324 sec. Powered by WordPress ME