ruby-on-rails – 如何将多个设计模型重定向到多个特定网址?
我有三个独立的设计模型,我有三个不同的sign_in屏幕.这三个人都有一个仪表板:
devise_for :md1 devise_for :md2 devise_for :md3 match 'md1/dashboard' => 'md1#dashboard',:via => :get match 'md2/dashboard' => 'md2#dashboard',:via => :get match 'md3/dashboard' => 'md3#dashboard',:via => :get 我希望当有一个mdX成功登录时,它会重定向到mdX#dashboard,如果有可能通过GET.我试过了: devise_scope :md1 do root :to => 'md1#dashboard' end devise_scope :md2 do root :to => 'md2#dashboard' end devise_scope :md3 do root :to => 'md3#dashboard' end 然后当我用md1成功登录时,我被重定向到md1仪表板,但是当我成功登录md2时,我被重定向到md1的sign_in屏幕. def after_sign_in_path_for resource dashboard_path resource end 但是没有这样的方法.有没有一种简单的方法可以做到这一点,或者它必须与每个模型的if语句一起使用? UPDATE 一些路线可以更好地理解和获取更多信息以获得更好的解决方案 md1_dashboard GET /md1/dashboard(.:format) md1#dashboard md2_dashboard GET /md2/dashboard(.:format) md2#dashboard md3_dashboard GET /md3/dashboard(.:format) md3#dashboard 提前致谢 解决方法
当你写这篇文章时:
devise_scope :md1 do root :to => 'md1#dashboard' end devise_scope :md2 do root :to => 'md2#dashboard' end devise_scope :md3 do root :to => 'md3#dashboard' end 您正在定义三个具有相同名称的根路由.由于它们冲突,只会使用第一个.这就是为什么只有md1工作的原因.你可能想写这个: scope :md1 do root :to => 'md1#dashboard' end scope :md2 do root :to => 'md2#dashboard' end scope :md3 do root :to => 'md3#dashboard' end 在这种情况下,您将在三个不同的范围定义三个不同的根路由(再次检查rake路由).注意范围是一个范围路由的路由器方法,devise_scope不限制任何路由,它只是告诉您要使用哪个设备范围,除非Devise明确要求您这样做(您将知道它何时发生) ). 在此更改之后,一切都应该按预期工作.请注意,默认情况下,Devise使用#{scope} _root_path在成功登录后重定向,这就是上面的代码工作的原因(检查rake路由,你会看到你现在定义了md1_root,md2_root等). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |