0

create.js.erbビューフォルダーにあるjsファイルがあります。レコードを作成しようとすると呼び出されるはずですが、呼び出されていません。理由がわかりません。正直に言うと、アプリがビュー フォルダー内の js ファイルを呼び出す方法さえわからないため、問題をデバッグするためにここに貼り付けるコードがわかりません。

ビュー フォルダー内の js がどのように実行されるか、アセット パイプラインではなくビュー フォルダーに js ファイルを配置するタイミングを説明できる人はいますか?

4

1 に答える 1

1

*.js.erb ファイルは、コントローラー アクションで AJAX/JS を使用している場合にレンダリングされます。デフォルトでは、create メソッドを呼び出すと、Rails は HTML を使用して応答します。これにより、新しいページが読み込まれます。代わりに AJAX を使用したい場合があるため、ビュー フォルダーに js.erb ファイルを作成します。

これが機能するには、使用しているフォームおよび/または link_to オブジェクトが AJAX 対応である必要があります (:remote => true属性が必要です)。それらがリモート フォームとして指定されていない場合、これらは JS および作成の代わりに HTML を実行します。 js.erb ファイルが呼び出されることはありません。

コントローラ メソッドは、js リクエストに応答する方法も知っている必要があります。次のようなものが必要です:

respond_to do |format|
  format.js
end

このコードは Rails に、ビュー フォルダーで "method".js.erb というファイルを探すように指示します。この場合は、create.js.erb です。

これらのファイルは、アセット パイプラインに配置する通常の JS ファイルとはまったく異なります。これらは、コントローラー アクションの結果としてレンダリングされるビュー テンプレートです。

Rails/AJAX のチュートリアルが参考になるかもしれませんが、このプロセス全体を順を追って説明した非常に優れたチュートリアルを次に示します。

http://net.tutsplus.com/tutorials/javascript-ajax/using-unobtrusive-javascript-and-ajax-with-rails-3

さらに支援が必要な場合は、コントローラーとビューファイルのコードを投稿してください...

于 2013-09-10T21:50:00.353 に答える