如何在进行ajax调用后从控制器呈现部分

时间:2012-11-10 05:10:00

标签: javascript ruby-on-rails ajax ruby-on-rails-3

我在向控制器中的方法发出AJAX请求后尝试渲染部分。这是我目前的AJAX电话:

$('.savings_link').click(function(event){
 $.ajax({
    type: 'GET',
    url: '/topics/savings_easter_egg',
    data: {
      savings: data[key]['saving']
    } ,
    dataType: 'json',
  });

 event.preventDefault(); // Prevent link from following its href
});

此调用当前有效,它会触及我的控制器方法,我尝试返回并渲染部分。

def savings_easter_egg
  @savings = params[:savings] if params[:savings]

  return render :json => {
    :html => render_to_string({
      :partial => "topics/savings",
      :locals => { :savings => @savings }
    })
  }
end

使用firebug,我得到了回复:

{"html":"<p>Hi</p>"}

反映了我的部分主题/节省,但页面没有重新加载或显示我的部分内容。

但是,我想实际重定向或渲染(显示)实际的部分。有什么建议吗?

1 个答案:

答案 0 :(得分:2)

你的代码应该是这样的

$.ajax({
 type: 'GET',
 url: '/topics/savings_easter_egg',
 data: {
  savings: data[key]['saving']
 },
dataType: 'json',
  success: function(data) {
    $('your div').html(data.html);
 }
});

你必须在你的成功函数中使用该响应,只需添加到上面的div中。