用js渲染HTML部分

时间:2019-01-30 14:22:00

标签: javascript ruby-on-rails partial

我想用js response_to渲染html部分

这是我的控制人:

class SearchesController < ApplicationController
  def index
    @users = User.ransack(first_name_or_last_name_cont: params[:query]).result(distinct: true)
    @teams = Team.ransack(name_cont: params[:query]).result(distinct: true)
    
    respond_to do |format|
      format.js {}
      format.json {}
      @users = @users.limit(5)
      @teams = @teams.limit(5)
    end
    
  end
end

这是我的index.js.erb:

$('<%= j render :partial => 'result_list' %>')

它可以工作,但是在我的搜索下拉列表中无法正确显示html

我有这样的东西:

$('
\n\nUsers\n<\/span>\n\n\n<\/i>\n<\/span>\nCharlotte Marie<\/span>\n<\/a>\n\n\n<\/i>\n<\/span>\nMatrice .io<\/span>\n<\/a>\n\n\n\"Maboukra\"\n<\/span>\nMichael Aboukrat<\/span>\n<\/a>\n\n\n<\/i>\n<\/span>\nConstance Albanel<\/span>\n<\/a>\n\n\n\"Malberte\"\n<\/span>\nMatthieu 

请让我知道正确的js代码

1 个答案:

答案 0 :(得分:0)

您要将整个HTML部分直接渲染到$()标记中,这是不正确的。请记住,Rails所做的是将Javascript加载到js.erb文件中。

相反,您应该将其加载到另一个HTML元素中,例如:

<span id="container"></span>

,然后使其中的HTML成为要呈现的部分,因此,在index.js.erb中,您应该编写:

$('#container').html("<%= j render partial: 'result_list' %>");