Я только что сгенерировал контроллер, и когда я пытаюсь получить доступ к любым маршрутам с ним, рельсы просто дают мне 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
получает ту же ошибку.
конфигурации/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/}
Я использую рельсы 4.2.0beta4 с Kubuntu 14.04.
Редактировать: Полная трассировка стека, как и требовалось. Единственными частями, которые есть в моем приложении, являются представления заголовков и приложений. Я тщательно их рассмотрю, но они уже отлично работают с существующим контроллером.
Редактировать 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? И ваше действие на самом деле называется baz? Если нет, введите настоящие имена - это облегчит людям понимание и обнаружение ошибок. –
@ joshua.paling Я пытался быть [минимальным, полным и проверяемым] (http://stackoverflow.com/help/mcve), а также не помещать имена с еще не запущенного сайта для индексирования google , Теперь я изменил имена, чтобы быть более описательными, и создал новый контроллер с фактическим названием «natural_products» с действием «органический», чтобы проверить, что моя проблема не была разовой. – madstap
Можете ли вы показать больше об ошибке и трассировке стека? Какая строка является ошибкой? Это в представлении или в действии контроллера? – sealocal