我想用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代码
答案 0 :(得分:0)
您要将整个HTML部分直接渲染到$()标记中,这是不正确的。请记住,Rails所做的是将Javascript加载到js.erb
文件中。
相反,您应该将其加载到另一个HTML元素中,例如:
<span id="container"></span>
,然后使其中的HTML成为要呈现的部分,因此,在index.js.erb
中,您应该编写:
$('#container').html("<%= j render partial: 'result_list' %>");