Ruby on rails Rails路由逻辑
将自定义逻辑放在routes.rb中可以吗 例如:Ruby on rails Rails路由逻辑,ruby-on-rails,routes,Ruby On Rails,Routes,将自定义逻辑放在routes.rb中可以吗 例如: unless current_user root :to => anonymous_page else root :to => logged_in_page end 那不是那样的。路由是在服务器启动时读取/创建的,而不是基于每个请求。您必须将此类逻辑放入控制器。您可以将自定义逻辑放入路由。。。但正如复仇者所建议的,“当前用户”将无法工作,因为加载路由文件的时间。我们有时在routefile中使用逻辑(例如设置只有在RAIL
unless current_user
root :to => anonymous_page
else
root :to => logged_in_page
end
那不是那样的。路由是在服务器启动时读取/创建的,而不是基于每个请求。您必须将此类逻辑放入控制器。您可以将自定义逻辑放入路由。。。但正如复仇者所建议的,“当前用户”将无法工作,因为加载路由文件的时间。我们有时在routefile中使用逻辑(例如设置只有在RAILS_ENV==“development”时才可用的路由) 您可能需要的是“匿名页面”上的前置过滤器,例如:
你可以用清理宝石来做你想做的事。从许可文件中:
Blog::Application.routes.draw do
constraints Clearance::Constraints::SignedIn.new { |user| user.admin? } do
root to: 'admin'
end
constraints Clearance::Constraints::SignedIn.new do
root to: 'dashboard'
end
constraints Clearance::Constraints::SignedOut.new do
root to: 'marketing'
end
end
这是因为清除将自己添加到中间件堆栈中,使登录状态在路由处理之前可用。注意:Desive在这里做了一些事情,使神奇发生:
Blog::Application.routes.draw do
constraints Clearance::Constraints::SignedIn.new { |user| user.admin? } do
root to: 'admin'
end
constraints Clearance::Constraints::SignedIn.new do
root to: 'dashboard'
end
constraints Clearance::Constraints::SignedOut.new do
root to: 'marketing'
end
end