如何在Rails中为collection_select设置HTML选项?

时间:2009-12-22 16:42:34

标签: html ruby-on-rails drop-down-menu

我似乎无法找到将类添加到由Rails collection_select生成的select标记的语法。一些帮助?

3 个答案:

答案 0 :(得分:175)

许多Rails助手都会使用多个哈希参数。第一个通常是控制帮助器本身的选项,第二个是html_options,您可以在其中指定自定义ID,类等。

方法定义如下所示:

collection_select(object, method, collection, value_method, text_method, options = {}, html_options = {})

你会注意到参数列表中的多个'= {}'。要使用它,您指定的第一组选项实际上必须用大括号括起来:

collection_select(:user, :title, UserTitle.all, :id, :name, {:prompt=>true}, {:class=>'my-custom-class'})

如果除了html类之外没有任何指定选项,那么只需添加一个空的哈希占位符:

collection_select(:user, :title, UserTitle.all, :id, :name, {}, {:class=>'my-custom-class'})

其他API文档可在以下位置获得: http://apidock.com/rails/ActionView/Helpers/FormOptionsHelper/collection_select

答案 1 :(得分:8)

= f.collection_select :category_id, Category.order(:name), :id, :name, {}, {class: "store-select"}

答案 2 :(得分:0)

以防万一,我遇到了同样的问题,我分享了我的结果,我只是尝试放置 {},{},所以我必须更明确地放置这样的:options = {}, html_options = {},因为它对我不起作用。

<div class="field">
   <%= form.label :country_id %>
   <%= form.collection_select :country_id, @countries,:id, :name, options = {:prompt => 'Select a Country...'},
        html_options = {class: "dropdown"}%>
 </div>

问候!