如何让主轨应用程序使用引擎路由

时间:2014-07-01 13:47:24

标签: ruby-on-rails ruby-on-rails-plugins

我正在创建我的第一个rails引擎来处理rails 4应用程序中的远程身份验证。我使用http://guides.rubyonrails.org/engines.html作为我的指导来帮助我。

我在引擎中创建了一个会话控制器,我将用它来处理身份验证逻辑,但是我很难让我的主应用程序路由到引擎以提示进行身份验证。

我的引擎路由文件有:

resources :sessions only: [:new, :create, :destroy]

如果我运行rake路线,我可以看到我的路线在那里。但我不知道如何访问它们。例如:

auth_test$ rake routes
Prefix Verb URI Pattern            Controller#Action
tests_index GET  /tests/index(.:format) tests#index
my_engine      /my_engine        MyEngine::Engine
root GET  /                      tests#index

Routes for MyEngine::Engine:
sessions POST   /sessions(.:format)     my_engine/sessions#create
new_session GET    /sessions/new(.:format) my_engine/sessions#new
session DELETE /sessions/:id(.:format) my_engine/sessions#destroy

我尝试使用new_session_path等正常方式使用的东西但是看起来并不起作用。我收到以下错误:

undefined local variable or method `new_session_path' for #<TestsController:0x007fba02150c20>

我如何指定这条路线,以便我的主应用程序知道使用我的引擎而不是主要路线的路线?

1 个答案:

答案 0 :(得分:1)

从应用程序到引擎:

<%= link_to "Sessions", my_engine.new_session_path %>

从引擎到应用

<%= link_to "Test Index", main_app.tests_index_path %>