Не могу сделать Stimulus JS data-action в collection_select Rails 6
Я новичок в Stimulus JS. Я немного застрял, пытаясь создать простой огонь события, используя
collection_select
по форме (создается с помощью рельсов 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"} %>
...и т.д
Я могу только выстрелить
console.log('works!)
если я использую теги выбора html вместо рельсов
collection_select
. Событие запускается, если я создаю тестовую кнопку или использую
form.check_box
вместо.
Есть идеи? Извините, если это глупый вопрос, у меня нет идей.
Благодаря!
1 ответ
В
data-
являются атрибутами html, поэтому вы пропустите один параметр в
form.collection_select
вызов
<%= form.collection_select :company_id, Company.all, :id, :name, nil, data: {action: "change->dropdown#handleChange"} %>
См. Описание метода