0

私は Beginning Rails 3, Updated book from Apress 2010 に従っています。私が抱えている問題は、jQuery アダプターを使用して Ajax でテンプレートを動的にロードすることです。すべてが機能しますが、ページ上で 3 回レンダリングされているようです。

ユーザーが「新しいコメント」リンクをクリックしたときに動的にロードする方法を次に示します。

ビュー/記事/show.html.erb

<%= link_to "new comment",
            new_article_comment_path(@article, :format => :js),
            :remote => true,
            :id => 'new_comment_link' %>

次に、そのようにレンダリングします。

ビュー/コメント/new.js.erb

$("<%= escape_javascript render :file => 'comments/new'," +
  " :formats => [:html], :handlers => [:erb] %>")
  .insertAfter('#comments');

次に、ログにこれが表示されます。

Started GET "/articles/1/comments/new.js" for 127.0.0.1 at 2013-01-18 14:51:05 -0600
Processing by CommentsController#new as JS
  Parameters: {"article_id"=>"1"}
  Article Load (0.2ms)  SELECT "articles".* FROM "articles" WHERE "articles"."id" = ? LIMIT 1  [["id", "1"]]
  Rendered comments/new.html.erb (53.8ms)
  Rendered comments/new.js.erb (54.6ms)
Completed 200 OK in 57ms (Views: 55.9ms | ActiveRecord: 0.2ms)

erb と js ファイルがレンダリングされることに注意してください。どういうわけか、私のページに3回表示されてしまいます。

これを修正する方法の手がかりはありますか?Rails 3.2.9、rails.js (最新)、および jquery-1.9.0 を使用しています。

ありがとう!

4

1 に答える 1

0

解決しました!

rails.js と jquery.js を 2 回追加していたことがわかりました。

ここにスキニーがあります: assets/javascripts/application.js は、javascript ファイルをアプリに含めるために重要です。基本的に、そこで定義されたものはすべてページにプッシュされます。アプリで少なくとも 1 回定義されていることを確認する必要があります。

ビュー/レイアウト/application.html.erb

<%= javascript_include_tag "application" %>

以上です!Ajax jQuery アダプターは問題なく動作するはずです。javascript フォルダーに追加のファイルを追加しないように注意してください。これらのファイルも押し出されてしまいます。これはまさに望ましくないことです。基本的に、私は application.html.erb と両方のファイルをダウンロードして手動でアダプターを定義していました。うまくいけば、これはどこかで失われた貧しい魂を助けるでしょう.

ハッピーハッキング。

于 2013-01-19T14:43:27.920 に答える