Pow并不认识引擎创建的路线

时间:2015-01-14 18:22:28

标签: ruby-on-rails-4 rails-engines rack-pow

我有一个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

编辑:我已经确定,当引擎在普通应用程序中使用时,这不起作用,因此它不仅仅是虚拟应用程序。

1 个答案:

答案 0 :(得分:0)

所以,原来是完全不相关的。我链接的引擎服务页面包含一个link_to帮助程序,其中第二个参数(路径)依赖于ENV['RAILS_ENV']。在Pow中,这个值是零(而在WEBrick中,它被设置为'开发',正如作者可能预期的那样),因此它试图渲染link_to('text', nil)。以某种方式产生了上述错误。