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



我是Stimulus JS的新手。我有点拘泥于在表单中使用collection_select(使用rails g scaffold创建(来创建一个简单的事件fire。

这是我的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

如果我使用html选择标记而不是rails的collection_select,我只能启动console.log('works!)。如果我创建一个测试按钮或使用form.check_box,则会触发事件。

有什么想法吗?很抱歉,如果这是个愚蠢的问题,我没有主意。

谢谢!

data-是html属性,因此在form.collection_select调用时会漏掉一个参数

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

参见方法描述

相关内容

  • 没有找到相关文章

最新更新