更新
ここにあなたのコメントに応じていくつかの詳細情報があります.
詳細については、まずJavascript に関するこのRails ガイドをお読みください。
update.js.erb はあなたのビューです。ビューに update.html.erb ファイルを用意する代わりに、コントローラーの format.js を含む Respond_to ブロックが update.js.erb (JavaScript コードとしてフォーマットされたもの) を jquery 関数に送り返します。
update.js.erb には純粋な JavaScript を含めることができます。ただし、javascript に変換される前にサーバーで処理されるため、任意の Ruby コードを埋め込むことができます。その ruby コードは javascript に変換されます。
Chrome 開発者ツールを使用している場合は、jquery 呼び出しの実行後に「ネットワーク」タブを確認できます。作成した AJAX 呼び出しの新しいエントリが表示されます。エントリをクリックすると、返された JavaScript が表示されます。
以下の update.js.erb ファイルを少し更新して、通常の JavaScript コードを .js.erb ファイルに入れる方法を示しました。最初の行は JavaScript です。2 行目は、サーバーが JavaScript に変換する ruby コードです。そのため、ブラウザに表示されるまでに、update.js.erb ファイル全体が JavaScript に変換されています。
それが役立つことを願っています...
以下の元の回答:
オプション1:
jQuery の成功関数がコントローラー アクションの正常な完了に関連付けられていると仮定すると (この例では編集アクションを使用します)、編集が成功した後に呼び出される update.js.erb というビューを作成します。
コントローラ:
if @user.update_attributes(params[:user])
respond_to do |format|
format.html { redirect_to @user, notice: "Successfully updated user." }
format.js
end
else
# ...
end
これは javascript から呼び出され、respond_to ブロックに format.js があるため、update.js.erb が自動的に呼び出されます。
update.js.erb:
console.log('see... this is a regular javascript call.');
<%= render partial: 'information', format: 'js' %>
オプション 2
あなたが含めたスニペット:
$('#holderDiv').empty().append('<ul> <%= j render @comments %> </li>')
埋め込まれた ruby コードが最初に処理され、次に javascript コードに変換される js.erb ファイルでのみ機能します。これは、次のような状況で機能します。
コントローラ:
def create
user = User.new(params[:user])
respond_to do |format|
if @user.save
@comments = 'some comments to display!'
format.js
else
# ...
end
end
end
create.js.erb:
$('#holderDiv').empty().append('<%= j render @comments %>')