2013-04-25 108 views
1

说我有评论部分,并且当用户输入评论时,如果用户未登录,我想在模式框中显示登录表单。用户登录后,应该继续发布评论。我尝试了以下内容,但它改变了注册页面的方向。有什么建议么?谢谢!如何重定向以打开模式

CommentsController

高清创建 如果!user_signed_in?
redirect_to的(new_user_session_path,:远程=>真,:数据=> {:目标=> “#signin”:肘节=> “模态”}) 别的 ###继续创建 端

end

回答

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 
+0

但这种方式每个链接到一个私人领域,我需要检查是否用户登录或不。有没有办法自动做到这一点?也许只是在before_filter方法中。 @marquez – 2013-10-03 14:35:45