我有一个Rails引擎(用于身份验证,但我不认为这很重要)。传统上,它来自/spec
目录中的虚拟应用程序。
引擎在应用程序中定义了几个路由,虚拟应用程序定义了自己的几个路径。
当我使用rails s
在WEBrick中运行虚拟应用程序时,它运行正常。但是,当尝试使用Pow(符号链接到my_engine/spec/dummy
中的~/.pow
)运行它时,它似乎无法识别引擎提供的路由,我得到:
ActionController::UrlGenerationError at /login
No route matches {:action=>"new", :controller=>"my_engine/sessions"}
这有什么问题,为什么它只发生在Pow?
以下是路线文件,如果重要的话:
my_engine /配置/ 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 /规格/虚设/配置/ 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
编辑:我已经确定,当引擎在普通应用程序中使用时,这不起作用,因此它不仅仅是虚拟应用程序。
答案 0 :(得分:0)
所以,原来是完全不相关的。我链接的引擎服务页面包含一个link_to
帮助程序,其中第二个参数(路径)依赖于ENV['RAILS_ENV']
。在Pow中,这个值是零(而在WEBrick中,它被设置为'开发',正如作者可能预期的那样),因此它试图渲染link_to('text', nil)
。以某种方式产生了上述错误。