【发布时间】:2023-01-31 21:53:55
【问题描述】:
我真的很努力让 Stimulus 控制器在我正在开发的 Rails 7 应用程序中运行,我将不胜感激任何人可能提供的任何帮助。我一直在旋转我的轮子。
我的应用程序.js
// Configure your import map in config/importmap.rb. Read more: https://github.com/rails/importmap-rails
import "@hotwired/turbo-rails";
import "controllers";
import 'bootstrap';
我将 Stimulus 固定在 importmap.rb 中,如下所示:
pin "application", preload: true
pin "@hotwired/turbo-rails", to: "turbo.min.js", preload: true
pin "@hotwired/stimulus", to: "stimulus.min.js", preload: true
pin "@hotwired/stimulus-loading", to: "stimulus-loading.js", preload: true
pin "jquery", to: "https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.js"
pin_all_from "app/javascript/controllers", under: "controllers"
我没有触及 javascript/controllers/application.js 或 index.js 文件。
我的刺激控制器 (ingredients-controller.js):
import { Controller } from '@hotwired/stimulus';
export default class extends Controller {
connect () {
console.log('HELLOOO!!!!');
}
addIngredients(event) {
event.preventDefault();
alert('test');
}
}
在我下面的视图中已连接<div>。我现在正在尝试的是让 <button> 元素进入 preventDefault() 并进行测试警报。我无法从上面的 Stimulus Controller 得到任何响应。
<div data-controller="ingredients">
<turbo-frame id=<%= f.field_id(:ingredents) %>>
<h2>Add Ingredients</h2>
<%# Selection section %>
<div>
<h6>Spirits</h6>
<%= f.collection_select :spirit_id, Spirit.all, :id, :spirit_type, {}, { :size => "5", :multiple => true } %>
<h6>Mixers</h6>
<%= f.collection_select :mixer_id, Mixer.all, :id, :mixer_type, {}, { :size => "5", :multiple => true } %>
<h6>Garnishes</h6>
<%= f.collection_select :garnish_id, Garnish.all, :id, :garnish_type, {}, { :size => "5", :multiple => true } %>
</div>
<%# Selected Ingredients %>
</turbo-frame>
<button data-action="click->ingredients#addIngredients">Add Ingredients</button>
</div>
如果有人知道我在这里遗漏了什么,将不胜感激!谢谢!
【问题讨论】:
标签: javascript ruby ruby-on-rails-7 stimulusjs import-maps