在ajax成功回调中渲染Rails部分

时间:2014-03-16 21:57:17

标签: jquery ruby-on-rails ajax

尝试从控制器直接渲染部分:

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响应?

1 个答案:

答案 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,但它应该工作。