【发布时间】:2023-02-08 08:41:25
【问题描述】:
在我的 Rails 7 应用程序中,我正在使用 Stimulus 并且需要将 data 属性添加到表单 select 以将其链接到 JavaScript 控制器。我还尝试使用 class 格式化字段(不是选项)。
这是表单选择元素:
<%= f.select(:repeat, Batch.repeats, {class: "class_name"}, { data: { batch_repeat_target: "input", action: "change->batch-repeat#toggle" }}) %>
上面的代码导致将 data 属性应用于选择字段,但将 class 排除在外。
我也尝试翻转class和data属性,如下:
<%= f.select(:repeat, Batch.repeats, { data: { batch_repeat_target: "input", action: "change->batch-repeat#toggle" }}, { class: "class_name" }) %>
结果与第一种方法相反:这次,field 是按类设置样式的,但数据属性未与 select 元素相关联。
根据this question,我意识到:
selecthelper 接受两个选项哈希值,一个用于选择,另一个 第二个用于 html 选项。所以你需要做的就是默认为空 选项作为项目列表后的第一个参数,然后将您的课程添加到html_options。从那里开始,我认为我需要在第一个选项散列中包含
class和data属性,并将第二个留空,如下所示:<%= f.select(:repeat, Batch.repeats, { { class: "class_name" }, { data: { batch_repeat_target: "input", action: "change->batch-repeat#toggle" }}}, {}) %>但是,上述修改后的代码导致
ActionView::SyntaxErrorInTemplate in BatchesController#new错误。在另一次尝试中,我尝试打乱顺序,将第一个选项散列留空,并在第二个选项中同时包含
class和data属性,如下所示:<%= f.select(:repeat, Batch.repeats, {}, { { class: "class_name" }, { data: { batch_repeat_target: "input", action: "change->batch-repeat#toggle" }}}) %>该修订还导致
ActionView::SyntaxErrorInTemplate in BatchesController#new错误。上面提到的问题已经超过 11 年了:现在是否有不同的约定,特别是在 Rails 7 中,关于表单选择元素?我如何在此处同时包含
class和data属性?
【问题讨论】:
标签: ruby-on-rails drop-down-menu stimulusjs