1

作成アクションが Javascript を介して呼び出される評価コントローラーがあります。評価フォルダーに create.js ファイルがあります。create.js ファイルを呼び出すには、次のようなものが必要だと思いました

respond_to do |format|
    format.js
end

これを削除しても、create.js ファイルはまだ呼び出されています。これは、create アクション内で create.js が呼び出されているためでしょうか (つまり、メソッドの名前と .js ファイルが一致しています)。ありがとう!

更新: format.js が見つからない場合、DOM の要素を見つけることができません。たとえば、次のようなものがある場合

$('#id_3').html('<%=escape_javascript render(:partial => 'show') %>');

ターミナルで確認できるように、部分的な「show」が実行されますが、div「id_3」が見つからないため、部分的なものはDOMに表示されません。明確にしていただければ幸いです、ありがとう

4

2 に答える 2

2

レールマジック!リソースへのリンクが /dogs/1.js のようなものである場合、respond_to は想像どおりにそれを処理します。/dogs/1 を呼び出してみて、何が起こるか見てみましょう。まだ動作しますか?format.js の前に format.html を追加してみてください。これにより、respond_to がどのように機能するかがよくわかります。

于 2012-05-20T16:58:35.787 に答える
1

これが Rails の仕組みです。アクションと同じ名前のビューをレンダリングします。

同じ名前の (異なる形式の) ビューが複数ある場合は、リクエストで必要なビューを指定し、respond_toメソッドを使用してそれに応じて応答する必要があります。

def index
  respond_to do |format|
    format.js { ... }
    format.html { ... }
    ...
  end
end

GET /index.htmlindex.html.erb ファイルをレンダリングします (ERB を使用していると仮定します)

GET /index.jsindex.js.erb ファイルをレンダリングします

于 2012-06-04T16:48:48.093 に答える