formのselectタグにidを設定する

form_forで生成したフォームのプルダウンメニューに
idを振る必要があったのですが、プチはまりに遭遇したので記録しておきます。


form_forでフォームを作成した場合、下記のような形になると思います。

    <% form_for user do |f| %>
        <%= f.select("address",Model.find(:all)) %>
    <% end %>

この場合、selectタグのIDは

    id="user_address"

になると思います。


このIDを変更するのにプチはまりました。
RailsAPIリファレンスによると、、、

  select(object, method, choices, options = {}, html_options = {}) 

となっています。
なので、

<%= f.select("address",
             省略,
             :include_blank => true,
             :id => "abc#{i}") %>

のように書いていたのですが、idが反映されない。。。

少々悩んで気づきました。一方的な間違いに。


下記コードで解決。

<%= f.select("address",
             省略,
             {:include_blank => true},
             {:id => "abc#{i}"}) %>

{}を省略可能なのは最後の引数だけね。。
もう{}は省略しないと誓いました。


ちなみにoptionsが無い場合は下記となります。

<%= f.select("address",
             省略,
             {},
             {:id => "abc#{i}"}) %>


以上、お恥ずかしい備忘録でした。