ご存じかもしれませんが、Rails 3 は UJS (控えめな JavaScript) を強く推奨しています。これは基本的に、JavaScript が面倒な作業を行うことを意味し、クライアント側の対話性をフォーム ジェネレーターと結びつけるべきではありません。ここで非常によく似たことを行うことをお勧めします。要素を動的に追加しているからといって、jQuery を使用してそれらの変更を監視できないわけではありません。
あなたのテンプレートで:
<%= f.select :question_select, Question.all, {prompt: "New Question"}, data: { question: true } %>
これにより、次のようなものが作成されます。
<select id="..." data-question="true">
...
</select>
次に、JavaScript でイベント委任を使用して、ドキュメント全体change
に設定された任意の要素のイベントを監視できます。data-question
$(function() {
$(document).on('change', '[data-question]', function() {
// this == the element that fired the change event
alert('Changed question');
});
});
注: を使用する代わりにdata-question
、要素にクラスを追加し、そのクラスを使用するように jQuery を変更することもできます。
$(function() {
$(document).on('change', '.question', function() {
// this == the element that fired the change event
alert('Changed question');
});
});
私は通常、JavaScript での CSS セレクターの使用を最小限に抑えようとしています。これにより、デザイナーは問題を壊すことなく好きなものに自由に変更できるようになりますが、それでもうまく機能します。