UPDATE 以下是對您的意見的更多信息。
首先,請在Javascript上閱讀此Rails Guide以瞭解更多信息。
update.js.erb是你的看法。您的視圖中沒有update.html.erb文件,控制器中的format.js的respond_to塊會將update.js.erb(格式爲javascript代碼)發送回您的jquery函數。
update.js.erb可能包含純javascript。然而,它被轉換爲JavaScript之前的服務器處理,所以你可以嵌入任何你想要的ruby代碼。該紅寶石代碼被轉換爲JavaScript。
如果您使用chrome開發人員工具,則可以在運行jquery調用後查看「網絡」選項卡。您會看到一個新的條目出現在您剛剛完成的AJAX調用中。如果你點擊該條目,你會看到返回的JavaScript。
我已經更新了下面的update.js.erb文件,以顯示如何將常規JavaScript代碼放入.js.erb文件。第一行是javascript。第二行是服務器轉換爲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>')
只會在js.erb文件,其中最先處理的嵌入式Ruby代碼的工作,然後轉換成JavaScript代碼。這將在一個情況下工作,如:
控制器:
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 %>')
在方案1中,您可以請拆分如何'控制器,JS,view'文件應該看起來很困惑我 – overflow
你的回答真的幫了我很多......非常感謝:) –