我有这个jquery ajax
$.ajax({
url: "/update_fb_user?fb_uid=" + FB.getSession().uid,
dataType: 'json',
success: function(data){
if(data.user != "none"){
// here is where i need to render this partial
}else{
window.location.href = '/signup';
}
}
这是视图中的部分调用
<div id="fb_iframe">
<% unless current_user.not_using_facebook? %>
<%= render :partial => 'fb_iframe' %>
<% end %>
</div>
我只是想做fb_iframe
,但有没有办法渲染部分或重新检查unless
块,因为ajax调用会更新它,以便unless
条件为真的...关于如何实现这一目标或任何方式的任何想法?
答案 0 :(得分:4)
假设你的部分已经在视图中(因为你说你想'重新检查除非块'),看起来像是在Ajax调用成功之后重新加载到页面是你的解决方案。
$.ajax({
url: "/update_fb_user?fb_uid=" + FB.getSession().uid,
dataType: 'json',
success: function(data){
if(data.user != "none"){
window.location.reload();
}else{
window.location.href = '/signup';
}
}
});
答案 1 :(得分:3)
问题是,当客户端运行JavaScript时,服务器上存在部分生命。您需要将服务器中呈现的html返回给客户端。如何执行此操作取决于部分取决于您的用户模型。
我能看到的两个最佳选择是:
返回部分作为json
结构的一部分/update_fb_use
返回。然后说$("#fb_iframe").html(data.html)
。
使用jQuery或Mustache.js将原始页面中的部分作为JavaScript模板包含在内。然后,如果您有用户,只需渲染模板。
方法2的问题在于,在您从用户那里获得足够的数据之前,可能很难创建JavaScript模板。这一切都取决于你的部分内容。