現在開発中の Rails 7 アプリで Stimulus コントローラーを機能させるのに非常に苦労しています。どなたか助けていただければ幸いです。私は永遠に車輪を回し続けてきました。
私のアプリケーション.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';
以下のように importmap.rb に Stimulus を固定しました。
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/[email protected]/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 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>
ここで私に何が欠けているのかご存知の方がいらっしゃいましたら、大変感謝いたします。ありがとう!
私も同様の問題を抱えていましたが(JSバンドラーの問題ですが)、Stimulusを手動でインストールすることで解決しました。手順はここで見つけることができます: https://github.com/hotwired/stimulus-rails
最初に Rails Assets:clobber を実行して、既にコンパイルしたすべてのアセットを逆コンパイルする必要がある場合があります。 そして、Stimulus の手動インストールが完了したら、おそらく、別の [ターミナル] タブで、yarn build –watch を実行する必要があります (rails を実行するのと同じ方法)。
したがって、手順は次のとおりです。
それが役に立てば幸い!