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


82

我似乎找不到为Rails生成的select标签添加类的语法collection_select。一些帮助?


1
您能举一些您想做的事吗?我不明白你的问题。
klew

当然...我正在使用rails的<%= f.collection_select ...%>生成:<select ...> ... </ select>我只希望它是:<select class =“ foo “ ...> ... </ select>
tybro0103,2009年

Answers:


180

许多Rails助手使用多个哈希参数。第一个通常是用于控制助手本身的选项,第二个是用于指定自定义ID,类等的html_options。

方法定义如下所示:

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


嗯,我应该更仔细地阅读文档了:)
tybro0103,2009年

1
这是此答案的扩展,其中显示了如何修改.css样式和使用jQuery onchange事件<%= collection_select(:question , :text, Question.all , :id, :text, {:prompt => 'Select Question...'}, {:class=>'input', :name=>'normalSelect', :id=>'normalSelect', :style=>'width:50%', :onchange=>"$('#accordion').accordion('activate',2);$('#blind').show('blind', 500)"}) %>
wantrapreneur 2012年

提请,很好的答案。消除了我对collection_select的所有怀疑。
Swapnil Chincholkar '02

非常准确的答案。非常感谢。
Francisco Quintero

3
谢谢您的明确解释。这是Rails棘手的事情之一,并且在RailsDocs中很少记录。
lacostenycoder 2015年

9
= f.collection_select :category_id, Category.order(:name), :id, :name, {}, {class: "store-select"}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.