Всякий раз, когда я просматриваю route.rb, я получаю сообщение об ошибке в своем приложении rails.

Я пытаюсь реализовать интернационализацию, как показано в railscasts, и каждый раз, когда я просматриваю свой файл маршрутов, я получаю сообщение об ошибке

 No route matches [GET] "/"

или ошибка

missing :controller
config/routes.rb:6:in `block (2 levels) in <top (required)>'
config/routes.rb:5:in `block in <top (required)>'
config/routes.rb:1:in `<top (required)>'

Вот мой файл route.rb

Jensenlocksmithing::Application.routes.draw do
  get "log_out" => "sessions#destroy", as: "log_out"
  get "log_in" => "sessions#new", as: "log_in"

  scope ":locale" do
    get "site/home"
    get "site/about_us"
    get "site/faq"
    get "site/discounts"
    get "site/services"
    get "site/contact_us"
    get "site/admin"
    get "site/posts"

    root :to => 'site#home'
  end

  #match '*path', to: redirect("/#{I18n.default_locale}/%{path}")
  #match '', to: redirect("/#{I18n.default_locale}")

  match "/savesort" => 'site#savesort'

  resources :users
  resources :abouts
  resources :sessions
  resources :coupons
  resources :monthly_posts
  resources :reviews

  resources :categories do
    collection { post :sort }
      resources :children, :controller => :categories, :only => [:index, :new, :create,  :new_subcategory]
  end
  resources :products do
    member do
       put :move_up
       put :move_down
   end 
  end
  resources :faqs do
    collection { post :sort }
  end 
end

Итак, почему всякий раз, когда я добавляю область «: locale» в конец строки, я получаю эти ошибки? Без него все работает нормально. Дайте мне знать, если вам нужно увидеть больше кода. Спасибо, парни

Изменить

В моем контроллере приложений у меня есть следующее:

private

def default_url_options(options = {})
  {locale: I18n.locale}  
end

Делает ли это то же самое, что и передача хэша в маршрутах?

Изменить 2

Я изменил свой маршрут на следующий, как показано в этой сути. https://gist.github.com/2322844

Так почему же часть :id добавляется к маршруту получения? как этот

 about_us_site GET  /sites/:id/about_us(.:format)  

не должно быть что-то вроде этого

 about_us_site GET  /sites/about_us(.:format)

Также добавлен весь мой файл route.rb и генерируемые им маршруты для получения дополнительной информации.
https://gist.github.com/2322861

Ответ всем заинтересованным:

я изменил

    get "site/home"
    get "site/about_us"
    get "site/faq"
    get "site/discounts"
    get "site/services"
    get "site/contact_us"
    get "site/admin"
    get "site/posts"

    root :to => 'site#home'

to

 resources :sites, except: [:new, :edit, :index, :show, :update, :destroy, :create] do  
   collection do  
   get :home  
   get :about_us  
   get :faq  
   get :discounts  
   get :services  
   get :contact_us  
   get :admin  
   get :posts  
 end  

конец


person ruevaughn    schedule 06.04.2012    source источник


Ответы (1)


Передача хеша должна исправить ваши маршруты:

scope "(:locale)", :defaults => { :locale => "en" } do
  resources :sites
end

Кроме того, вы можете захотеть создать SitesController и присвоить ему members:

resources :sites do
  member do
    get :about_us # Points to /sites/about_us
  end
end
person Graham Swan    schedule 06.04.2012
comment
Посмотрите на мое редактирование, должна ли функция default_url_options делать то же самое? - person ruevaughn; 06.04.2012
comment
Я на самом деле не уверен. Каков результат rake routes? - person Graham Swan; 06.04.2012
comment
Я убедился, что он действительно добавляет значение по умолчанию в мой контроллер приложений. Я изменил свои маршруты на стандарты, как вы определили, но добавил :id к маршрутам. Смотрите мое редактирование для деталей, еще раз спасибо - person ruevaughn; 07.04.2012
comment
В итоге я выбрал маршрут коллекции, а не участника, потому что коллекция не зависела от :id сайта. - person ruevaughn; 07.04.2012
comment
Маршруты locale у меня заработали, спасибо. Я просто обернул его вокруг своего сайта ресурсов и изменил имя моего контроллера сайта на sitecontroller и несколько других вещей. Еще раз спасибо за помощь - person ruevaughn; 07.04.2012
comment
Рад, что у вас все в порядке! Удачи в остальной части проекта. - person Graham Swan; 07.04.2012