进行ajax调用后如何从控制器呈现部分 [英] How to render a partial from controller after making an ajax call
问题描述
在向控制器中的方法发出 AJAX 请求后,我试图呈现部分.这是我当前的 AJAX 调用:
I am trying to render a partial after I make an AJAX request to a method in my controller. Here is my current AJAX call:
$('.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
});
此调用当前有效,它命中了我的控制器方法,我尝试返回并呈现部分.
This call currently works and it hits my controller method where I try to return and render a partial.
def savings_easter_egg
@savings = params[:savings] if params[:savings]
return render :json => {
:html => render_to_string({
:partial => "topics/savings",
:locals => { :savings => @savings }
})
}
end
使用萤火虫,我能够得到响应:
Using firebug, I was able to get the response:
{"html":"<p>Hi</p>"}
这反映了我的部分主题/储蓄,但页面不会重新加载或显示我的部分.
which reflects my partial topics/savings, but the page does not reload or display my partial.
但是,我想实际重定向或呈现(显示)实际的部分.有什么建议吗?
However, I want to actually redirect or render (display) the actual partial. Any advice?
推荐答案
你的代码应该是这样的
$.ajax({
type: 'GET',
url: '/topics/savings_easter_egg',
data: {
savings: data[key]['saving']
},
dataType: 'json',
success: function(data) {
$('your div').html(data.html);
}
});
您必须在成功函数中使用该响应,只需将其添加到上面完成的 div 中即可.
you have to use that response in your success function , just add to your div done above.
这篇关于进行ajax调用后如何从控制器呈现部分的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!