加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – jquery ajax使用rails视图渲染部分

发布时间:2020-12-17 03:40:30 所属栏目:百科 来源:网络整理
导读:我的 jquery ajax成功了 success: function(data) { $('#someId').html(data);} 我有一个名为_information.html.erb的部分文件 我如何渲染我的ajax成功响应rails部分视图(信息). 大多数资源都显示了这样的东西 $(‘#holderDiv’).empty().append(‘ ul%= j
我的 jquery ajax成功了

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

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

我如何渲染我的ajax成功响应rails部分视图(信息).

大多数资源都显示了这样的东西

$(‘#holderDiv’).empty().append(‘< ul><%= j render @comments%>< / li>‘)

但我对此并不满意.任何其他方式来解决它.

解决方法

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代码.该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 %>')

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读