Не могу сделать 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"} %>

См. Описание метода

Другие вопросы по тегам