【问题标题】:How to render a partial from controller after making an ajax call进行ajax调用后如何从控制器渲染部分
【发布时间】:2012-10-30 10:40:23
【问题描述】:

在向控制器中的方法发出 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

使用萤火虫,我能够得到回应:

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

这反映了我的部分主题/节省,但页面不会重新加载或显示我的部分。

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

【问题讨论】:

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


    【解决方案1】:

    你的代码应该是这样的

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

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

    【讨论】:

      猜你喜欢
      • 2013-08-18
      • 2014-08-19
      • 1970-01-01
      • 2017-04-14
      • 2012-09-09
      • 1970-01-01
      • 2015-08-01
      • 1970-01-01
      • 2012-03-02
      相关资源
      最近更新 更多