【问题标题】:f.select in Rails not applying Bootstrapf.select 在 Rails 中没有应用 Bootstrap
【发布时间】:2014-08-13 21:06:42
【问题描述】:

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

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

有谁知道为什么引导类:“form-control”没有呈现?

我猜我的语法是错误的。任何帮助表示赞赏。

【问题讨论】:

    标签: ruby-on-rails forms twitter-bootstrap


    【解决方案1】:

    Per the documentationselect 的方法签名是:

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

    html_options,这是您的 HTML 属性选项(如 :class)应该放在 options 之后的位置,但您省略了 options 并将 html_options 放在 choices 之后。试试这个:

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

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

    【讨论】:

    • 就是这样 - 感谢您的回答和相关文档。您有机会解释选择和选项之间的区别吗?我真的无法从文档中弄清楚。
    • options 是一个令人困惑的名字,不幸的是。它不引用&lt;options&gt; HTML 标签;它指的是改变方法行为的选项。例如,我们可以通过{ include_blank: true } 使第一个&lt;option&gt; 为空白,或者selected: 10 使值为10 的选项默认选中。
    • 小事是我使用 options_for_select 然后在编辑页面上它没有显示已经从数据库中选择的项目,为什么?
    【解决方案2】:

    更新 - 如果你现在看到这个,你需要把这个类放在一个对象中:

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

    我花了一些时间才弄明白,所以我认为值得发帖:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多