Ruby on rails rails 3/heroku/devise:如何指定不同的';登录页';用户何时登录?
我们希望为我们的应用程序提供3种不同的登录表单:Ruby on rails rails 3/heroku/devise:如何指定不同的';登录页';用户何时登录?,ruby-on-rails,devise,Ruby On Rails,Devise,我们希望为我们的应用程序提供3种不同的登录表单: 默认的登录表单将他们带到正常的仪表板(就像我们现在做的那样) “foo”登录表单,如果他们使用该表单登录,则会将他们带到专用屏幕 一个“酒吧”签到表,将他们带到另一个特殊用途的屏幕 我认为正确的方法是 a) 为/foo和/bar创建一个新路由,可能将两者指向同一个signin方法,但在路由中添加一个url参数“signin_type”,告诉我们它是哪种“类型”的signin表单 b) 实现一个自定义RegistrationsControlle
- 默认的登录表单将他们带到正常的仪表板(就像我们现在做的那样)
- “foo”登录表单,如果他们使用该表单登录,则会将他们带到专用屏幕
- 一个“酒吧”签到表,将他们带到另一个特殊用途的屏幕
这是我最好的猜测。如果正确的话,是如何做(b)和(c)让我感到困惑。如果您有任何想法,我们将不胜感激 我想你可能是想过度设计这个。我将使用页面中的单符号来实现这一点,并且只使用条件逻辑来覆盖designe控制器的(resource)方法的(resource)路径中的
后符号。这不仅在现在更容易实现,而且在将来也更容易维护。只需添加到应用程序控制器.rb
:
protected
def stored_location_for(resource)
nil
end
def after_sign_in_path_for(resource)
if condition_foo
redirect_to foo_url
elsif condition bar
redirect_to bar_url
else
redirect_to dashboard_url
end
end
第一个方法覆盖designe的默认位置root
,并将其设置为nil,然后后面的逻辑就很简单了。这应该可以满足您的需要。谢谢,但如果我正确理解了建议,不会让我有不同的登录页面(3个登录页面需要看起来不同,因为它们登录到应用程序的不同“部分”),实际上,如果您愿意,您仍然可以有3个不同的登录页面。只需按照教程将登录表单添加到任意页面即可。然后它将按照我回答中的逻辑重定向到适当的位置。