1

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

这是我的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"} %> ...ETC

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

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

谢谢!

4

1 回答 1

2

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

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

方法说明

于 2020-09-28T05:47:19.330 回答