У моих маршрутов есть ресурсы: home, но rspec говорит, что маршруты не определены? - PullRequest
0 голосов
/ 02 декабря 2010

Мой домашний контроллер имеет:

def about()
end

И у меня есть тест rspec, который выполняет GET 'about', и он не в состоянии сказать, что нет соответствующего маршрута.

не отображает ли это все действия в контроллере:

resources :home

или я должен явно указывать каждое действие в домашнем контроллере?

Ответы [ 2 ]

2 голосов
/ 02 декабря 2010

resources :home устанавливает маршруты RESTful по умолчанию - индексировать, показывать, создавать, редактировать, обновлять и уничтожать. Любые дополнительные маршруты должны быть указаны. Похоже, вы добавляете простой маршрут сбора, поэтому вы должны указать его следующим образом:

resources :home
  collection do
    get 'about'
  end
end

Это даст вам маршрут '/ home / about'. Я предполагаю, что это Rails 3. Если вы в Rails 2.x, сделайте это так:

map.resources :home, :collection => {:about => :get}

А из командной строки вы всегда можете увидеть, какие маршруты у вас есть, с помощью этой команды:

rake routes

Надеюсь, это поможет!

РЕДАКТИРОВАТЬ: Если вы хотите маршрут по умолчанию, вы можете добавить это:

match ':controller(/:action(/:id))'

Это маршрут по умолчанию, который будет соответствовать любым общим запросам.

ПОЛНАЯ СТАТЬЯ: Маршрутизация в Rails 3 - это свой зверь. В последнее время было много вопросов по этому поводу, поэтому я создал очень подробную статью с примерами кода, чтобы помочь другим:

Маршрутизация в Ruby on Rails 3

Я создал сопутствующее приложение Rails 3, которое также можно загрузить, чтобы поиграть с ним:

https://github.com/kconrails/rails3_routing

Если у вас есть какие-либо вопросы, пожалуйста, зайдите на мой сайт и спросите. Спасибо!

0 голосов
/ 02 декабря 2010
Ресурсы

предоставят вам 7 CRUD-методов для контроллера. Если вам нужны дополнительные действия, вам нужно сделать что-то вроде следующего:

resources :homes do 
  collection do
    match "about" => "homes#about", :as => "about"
  end
end

Тогда вам также будет доступен дополнительный помощник about_homes_path / url.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...