更新
这里有一些更多信息以回应您的评论。
首先,请阅读此Rails Guide on Javascript 以获取更多信息。
update.js.erb 是你的观点。控制器中带有 format.js 的 respond_to 块不会为您的视图提供 update.html.erb 文件,而是将 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。
更新.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
创建.js.erb:
$('#holderDiv').empty().append('<%= j render @comments %>')