这个问题总是出现,它可能指向的设计缺陷(@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
变量(。