gpt4 book ai didi

ruby-on-rails - jquery ajax 使用 Rails View 渲染部分

转载 作者:行者123 更新时间:2023-12-04 06:03:14 26 4
gpt4 key购买 nike

我的 jquery ajax 成功为

success: function(data) {
$('#someId').html(data);
}

我有一个名为 _information.html.erb 的部分文件

我如何将我的 ajax 成功响应呈现给 rails 部分 View ( information)。

大多数资源都显示出这样的内容
$('#holderDiv').empty().append('<ul> <%= j render @comments %> </li>')
但我对此感到不舒服。任何其他方法来解决它。

最佳答案

更新
以下是针对您的评论的更多信息。

首先请阅读此Rails Guide在 Javascript 上了解更多信息。

update.js.erb 是你的观点。 Controller 中带有 format.js 的 respond_to 块将发送 update.js.erb(格式化为 javascript 代码)回您的 jquery 函数,而不是为您的 View 提供 update.html.erb 文件。

update.js.erb 可以包含纯 javascript。但是,它在转换为 javascript 之前由服务器处理,因此您可以嵌入任何您想要的 ruby​​ 代码。该 ruby​​ 代码被转换为 javascript。

如果您使用 chrome 开发人员工具,则可以在 jquery 调用运行后查看“网络”选项卡。您将看到一个新条目出现在您刚刚进行的 AJAX 调用中。如果单击该条目,您将看到返回的 javascript。

我已经稍微更新了下面的 update.js.erb 文件,以展示如何将常规 javascript 代码放入 .js.erb 文件中。第一行是javascript。第二行是服务器将其转换为 javascript 的 ruby​​ 代码。因此,当它到达您的浏览器时,整个 update.js.erb 文件已转换为 javascript。

希望有帮助...

原答案如下:

选项 1:

假设您的 jQuery 成功函数与 Controller 操作的成功完成相关(我将在我的示例中使用编辑操作),您将创建一个名为 update.js.erb 的 View ,该 View 将在成功编辑后调用。

Controller :

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 代码。这将适用于以下情况:

Controller :
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 %>')

关于ruby-on-rails - jquery ajax 使用 Rails View 渲染部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19129285/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com