1

假设我有一个评论部分,当用户输入评论时,如果用户未登录,我想在模式框中显示登录表单。用户登录后,它应该继续发表评论。我尝试了以下操作,但它正在重定向注册页面。有什么建议么?谢谢!

评论控制器

如果 !user_signed_in?
redirect_to(new_user_session_path, :remote=>true, :data => { :target => "#signin", :toggle => "modal"}) else ### continue with create end

结尾

4

1 回答 1

0

我的建议是将模态设置为隐藏的部分内部display: none

当用户未登录时,将其呈现在您的布局视图 ( application.html.erb) 中:

<% unless user_signed_in? %>
   <%= render :partial => "signin_modal" %>
<% end %>

当您希望保护链接免受未登录用户的影响时,请将其包装在如下条件中:

<% user_signed_in? ? url = your_create_comment_action_path : url = "#signin" %>
<%= link_to "Comment", url %>

最后设置一个事件以在单击具有“#signin”href 属性的链接时打开登录模式。使用 jQuery:

$(document).on("click", "a[href='#signin']", function () {
    $("#SIGNIN_MODAL_ID").modal("show")
})

当然,您还需要保护您的控制器,before_filter为您的创建评论操作添加一条规则。

before_filter :check_unsigned_user, :only => [:create]

def check_unsigned_user
   unless user_signed_in?
      # make what you want
   end
end
于 2013-04-26T02:24:04.520 回答