Rails 3 -在sign_in之后设计重定向到form



在一个博客应用程序中,我希望每个用户都能访问一个表单来发表评论。

当用户提交评论表单时,如果没有登录,他将被重定向到design sign_in表单。

before_filter :authenticate_user!, :except => [:index, :show, :new]

我如何在用户登录后,将他重定向到评论表单并填写所有字段?

Thanks in advance

如果你想在每次登录后使用用户评论表单,添加ApplicationController:

#after_sign_in_path_for is called by devise
def after_sign_in_path_for(resource_or_scope)
  comment_path...
end

如果你想让用户回到他们登录前的页面,你可以保存当前控制器+会话中的动作并重定向回来:

session[:pre_login_controller] = params[:controller]
session[:pre_login_action] = params[:action]

然后:

def after_sign_in_path_for(resource_or_scope)
  if session[:pre_login_controller] && session[:pre_login_action]
    "#{session[:pre_login_controller]}/#{session[:pre_login_action]}"
  else
     some default path -- root url or comment path etc
  end
end

在Stack Overflow上突出显示了多个解决方案,用于在登录后重定向到以前的URL。

这可能是最合乎逻辑的解决方案,还有一个解决方案包括CanCan(我推荐使用)

Rails: Warden/design -如何在登录/访问失败前捕获url

对于表单的填写,我认为一个简单的解决方案是首先限制评论框。检查用户是否登录(我认为在设计它的user_signed_in?),如果user_signed_in?否则"您必须link_to登录才能评论"。如果在#new等操作中有注释,则可以通过设计限制整个新操作。为此,删除身份验证'except'中的:new。

相关内容

  • 没有找到相关文章

最新更新