49

送信時にコメント リストを更新する ajax ベースのコメント フォームを作成しようとしています。かなり基本的なもの。

基本的なコメント情報をcomments/_single.html.haml含む単一のタグを持つパーシャルがあり、これが私のファイルです (実際、これらは 3 つの異なるテスト ファイルが 1 つにマージされており、私の問題が何であるかを示しています)。<li>comments/create.js.erb

$('#comments ul.comments').append("<%= render :partial => 'comments/single', :locals => { :c => @comment } %>");
$('#comments ul.comments').append("<%= render :partial => 'comments/foobar' %>");
$('#comments ul.comments').append("foobar");
alert('foobar');

のコンテンツcomments/_foobar.html.hamlは だけfoobarで、内部に html はありません。私の問題は、最初の 2 行が機能しないことです。開発サーバー コンソールにエラーはありません。オブジェクト インスペクターには、コメント コードが正しく返されたことが示されていますが、コメント リストには追加されていません。3 行目は問題なく動作するので、4 行目も同様です。使い方に問題があるようrenderです。

4

1 に答える 1

119

Javascript コード内でパーシャルをレンダリングするときは、escape_javascript メソッドを使用する必要があります。

$('#comments ul.comments').append("<%= escape_javascript render(:partial => 'comments/single', :locals => { :c => @comment }) %>");

このメソッドは j としてエイリアス化されているため、これを行うこともできます

$('#comments ul.comments').append("<%= j render(:partial => 'comments/foobar') %>");

このメソッドは、JavaScript セグメントのキャリッジ リターンと一重引用符と二重引用符をエスケープします ActionView::Helpers::JavaScriptHelper Rails docs

于 2012-06-20T21:30:30.140 に答える