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

标签 ruby-on-rails ruby-on-rails-3

我的 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/

相关文章:

ruby-on-rails - Heroku SSL 表示受信任,但重定向到 http

html - Rails 如何转义并显示渲染 View 的内容

ruby-on-rails - HTML 表单命名约定的名称

ruby-on-rails - Rails 验证 full_name

ruby-on-rails - 混淆实例变量和局部变量

ruby-on-rails-3 - Rails 3.1.1 中的静态页面和资源

ruby-on-rails - Rails 3 迁移 : boolean (mysql vs postgreSQL)

ruby-on-rails - rails : Controller-specific menu in layout

ruby-on-rails-3 - rspec 应该包括尝试 chomp 数组

ruby-on-rails - 在 Rails View 中查找模式并替换为链接的正确方法