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() %>