Rails表单助手在添加自定义css类时进行选择



这个问题总是出现,它可能指向的设计缺陷(@dhh(

谁做这项工作:

<%= form.select :category_id, category_select_collection, {}, html_options =  { class: "form-select"} %>

但这不起作用:

<%= form.select :category_id, category_select_collection, html_options =  { class: "form-select"} %>

我敢打赌,这里有一些关于参数排序、命名参数、默认值等我偶然发现的微妙之处。但我看不出我的理解哪里不正确。

您有一个参数排序问题。form.select看起来像这样:

select(method, choices = nil, options = {}, html_options = {}, &block)

表单生成器的包装ActionView::Helpers::FormOptionsHelper#select

第三个参数是选项,第四个是HTML选项,所以您希望{ class: ... }位于第四个参数中。

你可能也误解了html_options = { class: "form-select"}的意思。这是对select方法的参数中的局部变量html_options的赋值。赋值是一个计算为RHS的表达式,因此它在第一种情况下仍然有效,但您可以说:

<%= form.select :category_id, category_select_collection, {}, any_local_variable_name = { class: "form-select"} %>

并获得相同的结果(当然,假设稍后不使用html_options变量(。

最新更新