[英]Moving route from Rails Application to Rails Engine gem
我正在做一個項目,我有一個 Rails 應用程序(rails 4.2.5),它包含一個 gem,它是一個 Rails 引擎。 我目前正在將路由定義從主應用程序移動到 gem。 我有一個練習其中一條路線的 controller 測試。 當我將路由定義移至 gem 時測試失敗,但路由看起來相同。
我的 gem 叫做 CallCenter,包括一個名為 call_center_controller 的 controller(帶有一個名為 reports_tab 的操作)。 這是 routes.rb 在 Rails 應用程序中的樣子:
...
mount CallCenter::Engine, at: "/call_center", as: 'call_center_urls'
get '/call_center/reports_tab' => 'call_center/call_center#reports_tab'
...
這就是我運行 rake 路線的原因:
❯❯❯ rake routes | grep reports_tab
call_center_reports_tab GET /call_center/reports_tab(.:format) call_center/call_center#reports_tab
此時 controller 測試運行沒有錯誤。 但是當我將路由定義移動到 gem 中的 routes.rb 文件時:
get 'call_center/reports_tab' => 'call_center#reports_tab'
(請注意,路由現在指向 'call_center#reports_tab' 而不是 'call_center/call_center#reports_tab',因為主應用程序將引擎安裝在 /call_center)
這是我的來自 rake 路由的 output,(仍在主應用程序的目錄中運行)
❯❯❯ rake routes | grep reports_tab
call_center_reports_tab GET /call_center/reports_tab(.:format) call_center/call_center#reports_tab
這與 rake 路由在主應用程序中定義時報告的路由相同,但現在我的測試失敗並顯示以下消息:
Failure/Error: get :reports_tab
ActionController::UrlGenerationError:
No route matches {:action=>"reports_tab", :controller=>"call_center/call_center"}
據我所知,路由已定義,並且看起來與之前在主應用程序的路由文件中時完全相同。 我錯過了什么?
我找到了答案 - 我需要將此添加到我的 controller 規范中,以告訴它查看引擎提供的路線:
routes { CallCenter::Engine.routes }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.