我有一个Rails引擎(用于身份验证,尽管我认为这并不重要)。 按照传统,它在/spec目录中带有一个虚拟应用程序。 引擎在应用程序中定义了两个路由,虚拟应用程序定义了一些路由。

当我使用rails s在WEBrick中运行虚拟应用程序时,它工作正常。 但是,当尝试使用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

编辑:我确定当在普通应用程序中也使用引擎时,这是行不通的,所以它不仅是虚拟应用程序。

#1楼 票数:0 已采纳

因此,原来是完全无关的。 我链接到的引擎服务页面包含一个link_to帮助器,其中第二个参数(路径)取决于ENV['RAILS_ENV'] 在Pow中,该值为nil(而在WEBrick中,正如作者所期望的那样,它被设置为'development'),因此它试图呈现link_to('text', nil) 这以某种方式产生了上述错误。

  ask by MrTheWalrus translate from so

未解决问题?本站智能推荐:

5回复

POW/Rails错误:启动applicationBundler::GemNotFound时出错:在任何来源中都找不到minitest-4.7.5

我只需要删除RVM并重新安装,然后安装Ruby 2.0.0 我可以在项目中从命令行运行rails console,但无法在浏览器中加载它。 我正在阅读关于.bash_profile和.bashrc的一些答案,而且我的〜文件夹中都没有。 我试过搞乱.bashrc文件,但没有任何帮助。
1回复

POW显示了先前的gemset路径

所以我在加载我的rails应用程序时遇到了一些问题。 当我尝试访问http://app.dev网址时,出现以下错误: 我将ruby更新为2.1.2,并为此应用程序创建了一个新的gemset,并将RVM设置为在应用程序文件夹中使用此gemset。 但是,pow仍在尝试使用默认的2.0.0@
3回复

如何在远程进程(例如,pow)中使用Byebug

如何连接到 Byebug 的远程调试实例(用于 Pow 等)?
3回复

LoadError:无法加载此类文件—捆绑程序/安装程序

我们正在升级到最新的 ruby​​ 版本 (2.2.3) 和最新的 Rails 版本 (4.2.4),但无法通过此错误:
1回复

使用POW启动应用程序时出错-Bundler::GemNotFound

我正在使用Anvil来管理我的本地站点。 我有几个站点,除了我最近的一个站点,它们都可以正常工作。 我尝试启动时遇到的错误是: Error starting application Your Rack app raised an exception when Pow tried to
1回复

Rails4.1.5引擎的路线未在耙路中显示-相信它的命名约定

所以我正在尝试将Rails 4.1.5引擎/插件添加到我们的项目中,然后由Rails加载。 运行rake routes显示我为模型建模之后的其他引擎,但是我相信我可能会遇到我不熟悉的Rails命名约定问题。 为了达到目的,我使用以下命令创建了引擎: 这为引擎创建了骨架。 我确保在此 R
2回复

如何创建根应用程序本身的Rails可挂载引擎?

我正在创建一个可Blog安装的引擎,人们将其用作完整的应用程序。 如果当前有人将我的gem添加到他们的Rails应用中,它将在其站点的/blog URL下工作(因为引擎已命名空间)。 如何允许他们仅将gem用作整个应用程序? 即,他们在其gem文件中包含gem "Blog" ,并且其
1回复

Rails4Engine无法从Root应用程序加载路线

我创建了一个新的Rails 4 Engine,并尝试对新创建的Engine没有安装路由,但以下文件对我而言不起作用。 app / routes.rb(根路由文件) new_engine / config / routes.rb(引擎路由文件) uhoh / lib / uhoh /