Rails + slim:选择标签上的数据属性未呈现
Posted
技术标签:
【中文标题】Rails + slim:选择标签上的数据属性未呈现【英文标题】:Rails + slim: Data attributes on a select tag not getting rendered 【发布时间】:2020-12-04 23:41:08 【问题描述】:数据属性不会在此选择标记上呈现。知道我错过了什么吗?
=f.select :template_kind, options_for_select(f.object.class::TEMPLATE_KINDS, selected: f.object.template_kind), include_blank: true, data: target: "template-form.switch", action: "change->template-form#handleChange"
即使是类属性也不会被渲染:
=f.select :template_kind, options_for_select(f.object.class::TEMPLATE_KINDS, selected: f.object.template_kind), include_blank: true, class: "myclass"
这是两种情况下的输出:
<select name="system_template[template_kind]" id="system_template_template_kind">
<option value=""></option>
<option value="email_message">email_message</option>
<option selected="selected" value="page">page</option>
</select>
如果我将数据属性或类移动到另一个(非选择)标签上,它们会被渲染。
Rails 和 slim-lang 的最新版本
文档显示从第三个参数开始应该可以指定html属性https://api.rubyonrails.org/v6.0.3.2/classes/ActionView/Helpers/FormTagHelper.html#method-i-select_tag
【问题讨论】:
您确定要查找合适的文档吗?您链接到 select_tag,您应该检查文档以获取表单选择:api.rubyonrails.org/v6.0.3.2/classes/ActionView/Helpers/…。 Html 选项应该在括号中 include_blank: true, class: "myclass" @nuaky 是的,就是这样!谢谢你这么快回复。下面有一个相同效果的答案,我会接受。感谢您的帮助。 【参考方案1】:按照方法定义:
select(object, method, choices = nil, options = , html_options = , &block)
您需要将include_blank: true
包装到 中,否则它们将用于
options
方法参数而不是html_options
:
f.select :template_kind,
options_for_select(f.object.class::TEMPLATE_KINDS, selected: f.object.template_kind),
include_blank: true ,
data: target: "template-form.switch", action: "change->template-form#handleChange"
与class属性相同,应该直接进入html_options:
...,
include_blank: true ,
class: "myclass",
data: target: "template-form.switch",
action: "change->template-form#handleChange"
【讨论】:
谢谢。这与@nuaku 的建议相同,我接受了。以上是关于Rails + slim:选择标签上的数据属性未呈现的主要内容,如果未能解决你的问题,请参考以下文章