假设我有一个评论部分,当用户输入评论时,如果用户未登录,我想在模式框中显示登录表单。用户登录后,应继续发布评论。我尝试了以下操作,但它重定向了注册页面。有什么建议?谢谢!
CommentsController
def创建
if!user_signed_in?
redirect_to(new_user_session_path,:remote => true,:data => {:target =>“#signin”,:toggle =>“modal”})
其他
###继续创建
端
端
答案 0 :(得分: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