Rails 3 アプリで、特定のチェックボックスが切り替えられるたびにブラウザーがリモート関数を呼び出すようにしたいと考えています。Rails 2 では、これは簡単に渡すことができました。
:onclick => remote_function(...)
チェックボックスヘルパーに。Rails 3 では、remote_* 関数が非推奨になったため、次の回避策を試しました。
- を使用してチェックボックスの周りにフォームを作成します
form_tag ... :remote => true
- ハンドラー
$("dummy_form").submit();
から呼び出してフォームを送信するonclick
Rails にバンドルされている rails.js ファイルには、submit
イベントをリッスンするオブザーバーがあります。ただし、これらはユーザーが送信ボタンをクリックしたときにのみトリガーされるように見えますが、form.submit()
呼び出されたときにはトリガーされません (これまでのところ、FF でのみテストされています)。
これにより、送信が AJAX を介してバックグラウンドで行われるのではなく、通常の方法で行われるという望ましくない影響が生じるため、ブラウザーは現在のサイトを離れ、コントローラーからの応答を表示します。
誰かが回避策を知っていますか? たぶん、同じ機能を取得するためのまったく異なる方法ですか?