2017-05-10 2 views
0

Une application rails utilisant un omniauth pour connecter une application. Après une connexion de succès, je voudrais re place un "Connexion" bouton avec le code html qui displayes le @ current_user.emailRendu partiel avec le nom d'utilisateur après un login

 $(function() { 
      $('#facebook-connect').click(function(e) { 
       e.preventDefault(); 

       FB.login(function(response) { 
       if(response.authResponse) { 
        $.ajax({ 
        type: 'POST', 
        url: '/users/auth/facebook/callback', 
        dataType: 'json', 
        data: {signed_request: response.authResponse.signedRequest}, 
        success: function(data, textStatus, jqXHR) { 
         $('#loginout_button').html("<%= j render(:partial => 'account_info') %>"); 

        }, 
       } 
       } 
       , {scope: 'email'}); 

      }); 
     }); 

Et la partie:

<% if user_signed_in? %> 
    <p class="text-left small"><%=current_user.email%></p> 
    <p class="text-left"> 
    <%= link_to destroy_user_session_path, :method => :delete do %> 
     <%=t('auth.logout')%> 
    <% end%> 

Mais bien sûr, cela ne fonctionnerait pas parce que le rendu partiel sur le chargement de la page et ainsi il génère le modèle de l'utilisateur déconnecté:

$('#loginout_button').html(" <li>\n <button type=\"button\" onclick=\"openLoginModal(); return false;\">Login<\/button>\n <\/li>\n"); 

Comment générer un modèle basé sur l'état de @current_user?

Répondre

1

Vous devez faire une autre requête ajax à l'intérieur de success callback pour charger account_info template.

+0

Pris conseil! – user664859