尝试从控制器直接渲染部分:
def show
@show = ...
respond_to do |format|
format.html
format.js { render :partial => "some_partial" }
end
end
由于$content
(下面)是动态的,我无法使用操作的show.js.erb
文件来呈现部分内容。
相反,我只想将HTML直接返回到回调的response
,如下所示:
var $content = $(some_dynamic_selector);
$.ajax({
url: '/show',
type: 'GET',
success: function(response) {
$content.html(response);
}
});
但这似乎从服务器返回format.html
的HTML,而不是部分HTML。
要获取部分HTML,我必须添加dataType: 'script'
,但会尝试直接执行响应。
问题:有没有办法在ajax成功回调中处理纯HTML响应?
答案 0 :(得分:0)
一个选项是将选择器标记传递给AJAX请求,并部分使用:
var $content = $(some_dynamic_selector);
$.ajax({
url: '/show',
type: 'GET',
data: 'selector=mydiv',
success: function(response) {
$content.html(response);
}
});
并在控制器中提供:
def show
@show = ...
@selector = params[:selector]
respond_to do |format|
format.html
format.js { render :partial => "some_partial" }
end
end
...并在show.js.erb文件中使用它。
尝试一下,它有点hacky,但它应该工作。