登录后使用用户名部分渲染

时间:2017-05-10 19:47:22

标签: ruby-on-rails devise omniauth omniauth-facebook

使用devise omniauth登录应用程序的rails应用程序。 登录成功后,我想重新安排一次登录"带有html代码的按钮,显示@ current_user.email

      $(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'});

          });
      });

部分:

    <% 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%>
                             

但当然它不会起作用,因为部分呈现在页面加载上,因此它生成登出用户的模板:

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

如何根据设计@current_user状态生成模板。

1 个答案:

答案 0 :(得分:1)

您需要在success回调中制作另一个ajax请求才能加载account_info模板。