为什么我的Rails引擎没有安装在正确的路径下?

时间:2015-05-26 19:47:36

标签: ruby-on-rails ruby session ruby-on-rails-4 routes

我有一个带有这些路径的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路由,但它们都在根目录下(/sessions,{ {1}},/login)。

如果这不能做我想做的事情,那么当我在这里指定路径时,究竟会发生什么?我使用的是Rails 4.2.1。

1 个答案:

答案 0 :(得分:0)

我相信在测试之后问题是你在引擎内绘制路线时使用'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

提供路径:

  • / project
  • / project / sessions
  • / project / login
  • / project / logout

见:

http://guides.rubyonrails.org/engines.html#mounting-the-engine http://guides.rubyonrails.org/engines.html#routes