сделать частичное после успешного вызова AJAX? - PullRequest
4 голосов
/ 20 марта 2011

У меня есть этот 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 выполняется ... любые идеи о том, как добиться одного или любого способа сделать это?

Ответы [ 2 ]

4 голосов
/ 20 марта 2011

Предполагая, что ваше частичное уже находится в представлении (поскольку вы сказали, что хотите «перепроверить блок« если нет »), это похоже на перезагрузку страницы после успешного вызова 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';
    }
  }
});
3 голосов
/ 20 марта 2011

Вот проблема, частичная жизнь на вашем сервере, в то время как JavaScript запускается на стороне клиента.Вы должны получить рендеринг HTML с вашего сервера обратно к клиенту.То, как вы это сделаете, зависит от того, зависит ли частичное от вашей пользовательской модели.

Два лучших варианта, которые я вижу:

  1. Возврат частичного как часть json структура, которую возвращает /update_fb_use.Затем произнесите $("#fb_iframe").html(data.html).

  2. Включите частичное на исходной странице в виде шаблона JavaScript, используя jQuery или Mustache.js .Затем, если у вас есть пользователь, просто отобразите шаблон.

Проблема с подходом 2 заключается в том, что может быть трудно создать шаблон JavaScript, пока вы не получите достаточно данных от пользователя.Все действительно зависит от того, что находится в вашем частичном.

...