Pow 无法识别引擎创建的路由
Pow doesn't recognize engine-created routes
我有一个 Rails 引擎(用于身份验证,但我认为这无关紧要)。与传统一样,它在 /spec
目录中带有一个虚拟应用程序。
引擎在应用程序中定义了一些路由,虚拟应用程序定义了一些自己的路由。
当我 运行 WEBrick 中的虚拟应用程序使用 rails s
时,它工作正常。但是,当尝试使用 Pow 运行 时(符号链接到 ~/.pow
中的 my_engine/spec/dummy
),它似乎无法识别引擎提供的路由,我得到:
ActionController::UrlGenerationError at /login
No route matches {:action=>"new", :controller=>"my_engine/sessions"}
这有什么问题,为什么它只发生在 Pow 中?
以下是路线文件,以备不时之需:
my_engine/config/routes.rb:
Rails.application.routes.draw do
get 'login', :controller => 'my_engine/sessions', :action => :new
post 'login', :controller => 'my_engine/sessions', :action => :create
get 'logout', :controller => 'my_engine/sessions', :action => :destroy
end
my_engine/spec/dummy/config/routes.rb:
Rails.application.routes.draw do
mount MyEngine::Engine => "/auth"
root 'home#index'
controller :home do
get :index
get :private, :as => 'private'
end
end
编辑:我确定当引擎在普通应用程序中使用时这也不起作用,所以它不仅仅是虚拟应用程序。
所以,原来是完全不相关的。我链接到的引擎服务页面包含一个 link_to
助手,其中第二个参数(路径)依赖于 ENV['RAILS_ENV']
。在 Pow 中,这个值为 nil(而在 WEBrick 中,它被设置为 'development',正如作者所期望的那样),因此它试图渲染 link_to('text', nil)
。以某种方式产生了上述错误。
我有一个 Rails 引擎(用于身份验证,但我认为这无关紧要)。与传统一样,它在 /spec
目录中带有一个虚拟应用程序。
引擎在应用程序中定义了一些路由,虚拟应用程序定义了一些自己的路由。
当我 运行 WEBrick 中的虚拟应用程序使用 rails s
时,它工作正常。但是,当尝试使用 Pow 运行 时(符号链接到 ~/.pow
中的 my_engine/spec/dummy
),它似乎无法识别引擎提供的路由,我得到:
ActionController::UrlGenerationError at /login
No route matches {:action=>"new", :controller=>"my_engine/sessions"}
这有什么问题,为什么它只发生在 Pow 中?
以下是路线文件,以备不时之需:
my_engine/config/routes.rb:
Rails.application.routes.draw do
get 'login', :controller => 'my_engine/sessions', :action => :new
post 'login', :controller => 'my_engine/sessions', :action => :create
get 'logout', :controller => 'my_engine/sessions', :action => :destroy
end
my_engine/spec/dummy/config/routes.rb:
Rails.application.routes.draw do
mount MyEngine::Engine => "/auth"
root 'home#index'
controller :home do
get :index
get :private, :as => 'private'
end
end
编辑:我确定当引擎在普通应用程序中使用时这也不起作用,所以它不仅仅是虚拟应用程序。
所以,原来是完全不相关的。我链接到的引擎服务页面包含一个 link_to
助手,其中第二个参数(路径)依赖于 ENV['RAILS_ENV']
。在 Pow 中,这个值为 nil(而在 WEBrick 中,它被设置为 'development',正如作者所期望的那样),因此它试图渲染 link_to('text', nil)
。以某种方式产生了上述错误。