mui*_*ine 11 routes ruby-on-rails devise
我需要通过多个名称访问一个路径.在我routes.rb做的
get '/route' => 'controller#edit', :as => 'name_a'
get '/route' => 'controller#edit', :as => 'name_b'
Run Code Online (Sandbox Code Playgroud)
这很好用,但无需加载路由表.根据我对文档的理解,:as在调用时定义一个辅助方法.
所以我去了我的ApplicationController并补充说
alias_method :name_b, :name_a
Run Code Online (Sandbox Code Playgroud)
我删除了第二行 routes.rb
但那失败了 Uncaught exception: undefined method name_a for class ApplicationController
有没有适当的方法为一条路径有两个名字?
=================编辑====================详细说明:
我使用设计的宝石来管理会议,登记,锁定,2种用户等,我们称他们为Admin和Guest.宝石很好,但它要求确定的路线名称行为正常.
就我而言,就设计而言,只有注册过程不同,所以我试图构建一个如下所示的结构:
app
controllers
users
admin
registration_controller.rb
guest
registration_controller.rb
session_controller.rb
password_controller.rb
registration_controller.rb
Run Code Online (Sandbox Code Playgroud)
的Admin和Guest从上述registration_controller其继承的从设计控制器继承.
现在,为了正常工作,Devise需要例如名称guest_user_password以及admin_user_password创建或删除密码检索.在我的情况下,两者都在相同的路径下,所以我希望两个名称重定向到相同的"用户/密码"控制器.
更重要的是,这就是我真正想要的原因.在重定向到密码检索控制器时,我的观点是不应该关心它是否正在处理Admin和Guest路由.两者都是用户,所以我想用user_password它们.
因此我的问题.:)
还要注意,正如我所写,事情有效.我只想尝试写出"最优雅的方式".
把别名放在你的 ApplicationController 中怎么样?
class ApplicationController < ActionController::Base
alias_method :route_new, :route_old
helper_method :route_new
Run Code Online (Sandbox Code Playgroud)
请记住,它是新名称,然后是旧名称。
helper_method 调用是为了在您的视图中使用这些,而不仅仅是控制器。
如果你愿意,你可以把它放在一个包含的模块中,叫做 RouteAliases
| 归档时间: |
|
| 查看次数: |
2281 次 |
| 最近记录: |