我正在使用Rails 4并尝试包含koudoku条纹宝石。这是我的路线:
# Added by Koudoku.
mount Koudoku::Engine, at: 'koudoku'
scope module: 'koudoku' do
get 'pricing' => 'subscriptions#index', as: 'pricing'
end
resource :account
devise_for :users, :skip => [:sessions]
as :user do
get '/login' => 'devise/sessions#new', :as => :new_user_session
post '/login' => 'devise/sessions#create', :as => :user_session
get '/logout' => 'devise/sessions#destroy', :as => :destroy_user_session
end
get '/dashboard', to: 'dashboard#index'
get '/reports/generate', to: 'reports#generate'
authenticated :user do
root :to => 'dashboard#index', :as => :authenticated_root
end
root :to => redirect('/login')
这是我得到的错误:
undefined local variable or method `root_url
我可以很好地访问其他路由,它只是尝试从模块路由中呈现Application Helper方法(例如,我已经定义的自定义应用程序方法,或路由方法)...这有意义吗?我该如何解决这个问题?
答案 0 :(得分:7)
尝试添加“main_app”。在你的根路径之前。例如:
main_app.root_path
答案 1 :(得分:0)
路由层中的条件逻辑违背了Rails MVC架构的意图。路径文件应该只是将Web请求映射到控制器,然后控制器具有条件逻辑来确定显示的内容。
在这种情况下,由于你想重定向,它有点不同,但我个人仍然会把它放在控制器中。换句话说,将root
发送到dashboard#index
,然后在该控制器的顶部(或在before_filter
中)发送
redirect_to login_path unless current_user_authenticated?
(这里我假设你有一个登录的命名路由,这将是一个很好的做法,以及一个current_user_authenticated?
方法来检查重定向之前你想要的任何逻辑。这将是一个更多的Rails -y方法,无论值多少......)