我剛剛生成了一個控制器,當我嘗試訪問任何路由與軌道只是給我一個UrlGenerationError。rails 4與新控制器的路由錯誤
# Error message
ActionController::UrlGenerationError in NaturalProductsController#organic
No route matches {:action=>"home", :controller=>"natural_products", :locale=>:en}
的問題似乎是,它使用{:action=>"home"
當我的控制器甚至沒有一個「家」的東西。但我不能爲我的生活弄清楚爲什麼,因爲我使用link_to t("organic.link"), organic_path
,甚至手動輸入localhost:3000/en/organic
獲得相同的錯誤。
的config/routes.rb中
Rails.application.routes.draw do
scope "(:locale)", locale: /en|pt|nb/ do
root 'company_name#home'
get 'about' => 'company_name#about'
get 'contact' => 'company_name#contact'
get 'products' => 'company_name#products'
get 'organic' => 'natural_products#organic'
end
http://localhost:3000/rails/info/routes
:
root_path GET /(:locale)(.:format) company_name#home {:locale=>/en|pt|nb/}
about_path GET (/:locale)/about(.:format) company_name#about {:locale=>/en|pt|nb/}
contact_path GET (/:locale)/contact(.:format) company_name#contact {:locale=>/en|pt|nb/}
products_path GET (/:locale)/products(.:format) company_name#products {:locale=>/en|pt|nb/}
organic_path GET (/:locale)/organic(.:format) natural_products#organic {:locale=>/en|pt|nb/}
我使用與Kubuntu的14.04軌4.2.0beta4。
編輯:完整的堆棧跟蹤,根據要求。我的應用程序中唯一的部分是標題和應用程序視圖。我會非常仔細地檢查他們,但他們已經在現有的控制器上正常工作。
編輯2:我發現問題,用它做出了答案。另外,不需要完整的堆棧跟蹤。
app/views/layouts/_bootstrap_header.html.haml:15:in `_app_views_layouts__bootstrap_header_html_haml__3398608881953314325_70155715867000'
app/views/layouts/application.html.haml:18:in `_app_views_layouts_application_html_haml__2085176017777231976_43442360'
您的控制器是否實際命名爲foo_bar?你的行爲實際上命名爲巴茲?如果沒有,請輸入真實姓名 - 這會讓人們更容易理解和發現錯誤。 – 2014-11-25 02:57:33
@ joshua.paling我試圖成爲[最小化,完整和可驗證的](http://stackoverflow.com/help/mcve),並且還沒有將尚未啓動的網站的任何名稱通過google進行索引。我現在更改了名稱,以便更具描述性,並用實際名稱「natural_products」生成一個新控制器,並使用「有機」操作來驗證我的問題不是一次性事件。 – madstap 2014-11-25 03:49:54
你能展示更多關於錯誤和堆棧跟蹤嗎?哪條線是錯誤投擲?它是在一個視圖還是一個控制器操作? – sealocal 2014-11-25 06:30:59