Rails中的f.select不应用Bootstrap

Dus*_*mes 10 forms ruby-on-rails twitter-bootstrap

我在Rails表单中有以下select元素:

<%= f.select :customer_type, options_for_select(["Retail","Contractor","Dealer"]), class: "form-control" %>
Run Code Online (Sandbox Code Playgroud)

有谁知道为什么引导类:"表单控件"不呈现?

我猜我的语法错了.任何帮助表示赞赏.

Jor*_*ing 25

根据文档,方法签名select是:

select(object, method, choices, options = {}, html_options = {})
Run Code Online (Sandbox Code Playgroud)

html_options,这是你的HTML属性选项:class应该去的地方options,但是你正在省略options并放在html_options后面choices.试试这个:

<%= f.select :customer_type, options_for_select(["Retail","Contractor","Dealer"]), {}, class: "form-control" %>
Run Code Online (Sandbox Code Playgroud)

PS如果你想知道方法签名为什么指定object,但在实际使用中我们永远不会传递object(method总是第一个),这是因为我们实际上并没有直接调用这个方法.当我们f.select(...)在一个form_for区块内调用时,Rails会召唤select(f.object, ...)我们.

  • 不幸的是,`options`是一个令人困惑的名字.它没有引用`<options>`HTML标签; 它指的是改变方法行为的选项.例如,我们可以传递`{include_blank:true}`使第一个`<option>`为空,或者`选择:10`以使默认选择值为"10"的选项. (4认同)