Ruby on rails rails 4使用新控制器路由错误

Ruby on rails rails 4使用新控制器路由错误,ruby-on-rails,Ruby On Rails,我刚刚生成了一个控制器,当我尝试使用它访问任何路由时,rails只会给我一个UrlGenerationError # Error message ActionController::UrlGenerationError in NaturalProductsController#organic No route matches {:action=>"home", :controller=>"natural_products", :locale=>:en} 问题似乎是,当我的控制

我刚刚生成了一个控制器,当我尝试使用它访问任何路由时,rails只会给我一个UrlGenerationError

# Error message
ActionController::UrlGenerationError in NaturalProductsController#organic
No route matches {:action=>"home", :controller=>"natural_products", :locale=>:en}
问题似乎是,当我的控制器甚至没有任何“家”时,它正在使用
{:action=>“home”
。但我一辈子都不明白为什么,因为我在使用
link\u to t(“organic.link”),organic\u 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/}
我正在使用rails 4.2.0beta4和kubuntu 14.04

编辑:按要求进行完整堆栈跟踪。我的应用程序中仅有的部分是标题和应用程序视图。我会非常仔细地检查它们,但它们在现有控制器上已经可以正常工作了

%li{class: ("active" if current_page?(action: "home"))}
  =link_to t("home.link"),      root_path

%li{class: ("active" if current_page?(action: "products"))}
  =link_to t("products.link"),  products_path
Edit2:我发现了问题,用它来回答。而且,不需要完整的堆栈跟踪

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'

我不确定这是否能解决所有问题,但
link_to
将锚文本作为第一个参数


因此,与其将链接链接到有机路径,不如将链接链接到“单击此处”、有机路径或类似路径。

我有一个包含这些链接的头文件,当我只有一个控制器时,它们工作得很好

%li{class: ("active" if current_page?(action: "home"))}
  =link_to t("home.link"),      root_path

%li{class: ("active" if current_page?(action: "products"))}
  =link_to t("products.link"),  products_path
……等等

现在,当我添加第二个控制器并试图访问它时,它运行了带有新控制器的“当前页面”(操作:“主页”)

修复方法是指定一个控制器,如下所示:

%li{class: ("active" if current_page?(action: "home", controller: "company_name"))}
  =link_to t("home.link"),      root_path

很抱歉,如果我浪费了任何人的时间,我应该更好地跟踪堆栈跟踪,从…+1开始,到让我看到错误的sealocal。

你的控制器是否真的命名为foo_bar?你的操作是否真的命名为baz?如果不是,请输入真实名称-这将使人们更容易理解和发现错误。@joshua.paling我正在尝试我现在把名字改成更具描述性的名字,并生成了一个新的控制器,实际名称为“natural_products”,动作为“organic”为了验证我的问题不是一次性的。你能展示更多关于错误和堆栈跟踪的信息吗?错误抛出的是哪一行?是在视图中还是在控制器操作中?呜呜,我在所有的混乱中输入了一个错误。我现在修复了它,但它仍然会给我错误消息。即使只是键入url
localhost:3000/en/organic
给出了错误。我尝试删除控制器,用不同的名称创建一个新的控制器,并直接从它自动创建的路由访问它,不做任何更改,例如使用routes.rb顶部的
获取“natural\u products/organic”
,它给出了相同的错误。