jquery ajax使用rails视图渲染部分

我的jquery ajax成功了

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

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

我如何渲染我的ajax成功响应rails部分视图( information )。

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

$('#holderDiv').empty().append('

    ')

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

    更新以下是回复您的评论的更多信息。

    首先,请阅读Javascript上的Rails指南以获取更多信息。

    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('
      <%= j render @comments %> ')

    只能在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 %>')