Совпадение маршрутов в коллекции - PullRequest
1 голос
/ 16 января 2012

Я определяю каждое действие в моем контроллере следующим образом (в routes.rb):

  resources :home do
    collection do
      get "home/index"
      get "home/about_me"
      get "home/contact"
    end
  end

Если бы я использовал совпадение для действия about_me , я должен использовать

      resources :home do
        collection do
          get "home/index"
          get "home/about_me"
          get "home/contact"
        end
      end

      match 'about-me' => 'home#about_me'

Существует какой-либо способ, как добавить правило match прямо в коллекцию? Я имею в виду что-то вроде этого:

  resources :home do
    collection do
      get "home/index"
      get "home/about_me", match => "about-me"
      get "home/contact"
    end
  end

И у меня еще один вопрос - когда я использую во routes.rb второй блок кода, поэтому, когда я задаю URL-адрес about-me, адрес работает нормально, но когда я набираю там home/about_me, так я получаю ошибку

Неизвестное действие: не удалось найти действие 'show' для HomeController .

Чем вызвана эта ошибка?

1 Ответ

3 голосов
/ 24 января 2012

Я думаю, что проблема в том, что ваши маршруты имеют префикс home/, когда они вложены в resources :home.Попробуйте это:

 resources :home do
   collection do
     get :index
     get :about_me
     get :contact
   end
 end

Кроме того, если у вас возникли проблемы с настройкой маршрутов, введите rake routes в консоли.Это создаст маршруты вашего приложения и соответствующие пути и контроллеры.

РЕДАКТИРОВАТЬ: Вот ответ на другой ваш вопрос.

resources :home do
  collection do
    get 'about_me' => 'about-me'
  end
end
...