我刚刚生成了一个控制器,当我尝试访问任何路由与轨道只是给我一个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