无法在 collection_select Rails 6 中使 Stimulus JS 数据操作

Can't make Stimulus JS data-action in collection_select Rails 6

提问人:Ignacio 提问时间:9/19/2020 更新时间:9/28/2020 访问量:4122

问:

我是 Stimulus JS 的新手。我有点卡在尝试使用表单(使用 rails g 脚手架创建)中制作一个简单的事件触发。collection_select

这是我的(刺激)文件:dropdown-controller.js

import { Controller } from "stimulus"

export default class extends Controller {
  static targets = ["target"];

  handleChange() {
    console.log('works!')
  }
}

这是我的文件:_forms.html.erb

<%= form_with(model: stock_order, local: true) do |form| %>
  ...

  <section data-controller="dropdown">
    <div class="field">
      <%= form.label :company_id %>
      <%= form.collection_select :company_id, Company.all, :id, :name, data: {action: "change->dropdown#handleChange"} %>
    </div>
  </section>

  <div class="actions">
    <%= form.submit %>
  </div>
<% end %>

我尝试了很多东西:

<%= form.collection_select :company_id, Company.all, :id, :name, data: {action: "change->dropdown#handleChange"} %>

<%= form.collection_select :company_id, Company.all, :id, :name, {data: {action: "change->dropdown#handleChange"}} %>

<%= form.collection_select :company_id, Company.all, :id, :name, data: {action: "dropdown#handleChange"} %>...等

如果我使用 html select 标签而不是 rails',我只能触发 .如果我创建测试按钮或改用测试按钮,则会触发该事件。console.log('works!)collection_selectform.check_box

有什么想法吗?对不起,如果这是一个愚蠢的问题,我没有想法。

谢谢!

ruby-on-rails ruby-on-rails-6 集合-选择 刺激js 表单-使用

评论

0赞 Francois 9/27/2021
请注意,根据 Stimulus 命名约定,您不应命名回调函数。相反,找到与选择更改时要发生的情况更相关的内容。handleChange

答:

2赞 Lyzard Kyng 9/28/2020 #1

是 html 属性,因此您在调用中会错过一个参数data-form.collection_select

<%= form.collection_select :company_id, Company.all, :id, :name, nil, data: {action: "change->dropdown#handleChange"} %>

请参阅方法说明

评论

0赞 Greg 7/1/2023
如何访问 Stimulus 控制器中的?:id