Managerの画面で、syozokuをコンボボックスにする!

$ vi app/views/managers/_form.rhtml
<%= error_messages_for 'manager' %>

<!--[form:manager]-->
<p><label for="manager_syozoku">所属</label><br/>
<select id="manager_syozoku" name="manager[syozoku]">   <----name=でmanager[syozoku]を指定!
<%= options_from_collection_for_select(Syozoku.find(:all),'id','syozoku_name') %>
</select></p>
<p><label for="manager_manager_name">主任技術者名</label><br/>
<%= text_field 'manager', 'manager_name'  %></p>

select_tabメソッドを使うと<%= select_tab "manager_syozoku" options_from.......
となるのだろうけど、これだと生成されるHTMLで

<select id="manager_syozoku" name="manager_syozoku">

となってしまい、選択までは出きるが、その値が:managerに渡らない。
仕方ないので、select_tabを止めて、

<select id="manager_syozoku" name="manager[syozoku]">

と直接書いてみたらちゃんと値が渡った。

うーーん、この辺り沢山の人が悩んだと思うのだけれど。大体、コンボボックス使って、そのIDを使わない分けないはずなんだけどなぁ。ググッても引っかからないのは、私のググリ方が良くないだけ?
で、更にググッてみて
http://www.pen-chan.jp/~tdiary/pen-chan/20060228.html
を参考に修正

<%= select ("manager","syozoku",Syozoku.find_all.collect{|i| [i.syozoku_name,i.id]}) %></p>

ちょっと違うけど、もしかしたら将来いるかもと思う情報が
http://a01.biz/wiki/index.php?rails
に。

コンボボックスで選択したらPostさせる(2007-02-12 (月) 14:46:24) †

select_tag に :onchange=>'submit()'オプションを指定する。

<%= start_form_tag :action=>:index %>
  <%= select_tag :site, @sites_list, :onchange=>'submit();' %>
<%= end_form_tag() %>