[英]Why doesn't my Rails engine mount under the correct path?
我有以下路线的Rails引擎:
Project::Engine.routes.draw do
post '/sessions' => 'project/sessions#create'
get '/login' => "project/sessions#new", as: :login
get '/logout' => "project/sessions#destroy", as: :logout
root to: 'project/home#dashboard'
end
在我的主要Rails应用程序中,我像这样安装了引擎的路线:
CMS::Application.routes.draw do
mount Project::Engine => '/project', as: 'project'
end
我认为这意味着我现在将拥有一个/project/login
路由和/project/logout
/project/sessions
路由,但是它们都位于root( /sessions
, /login
, /logout
)下。
如果这不能满足我的要求,那么当我在此处指定路径时,这到底是怎么回事? 我正在使用Rails 4.2.1。
我相信经过测试,问题在于您在绘制引擎内部的路线时使用了“ project / [...]”。 您将引擎作为项目安装在主应用程序中。 在引擎内部引用时,项目超出范围。
更改为以下内容应使其起作用。
Project::Engine.routes.draw do
post '/sessions' => 'sessions#create'
get '/login' => "sessions#new", as: :login
get '/logout' => "sessions#destroy", as: :logout
root to: 'home#dashboard'
end
然后通过以下方式安装发动机:
CMS::Application.routes.draw do
mount Project::Engine => '/project', as: 'project'
end
给出路径:
看到:
http://guides.rubyonrails.org/engines.html#mounting-the-engine http://guides.rubyonrails.org/engines.html#routes
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.