Rails 3: Как проверить область действия роутера?
Я использую Rails 3.0, и у меня есть следующее в моих файлах rout.rb:
scope "/:location" do
resources :agents
end
Так что я могу сделать это:
agents = Agent.where("location = ?", params[:location])
(Там может быть лучший способ сделать это..? В основном я хочу URL-адреса, такие как: myurl.com/london/agents
)
В любом случае, моя проблема с тестами (которые я все еще изучаю), как я могу заставить эту работу работать с областью:
class AgentsControllerTest < ActionController::TestCase
test "should get index" do
get 'index'
assert_response :success
end
end
Он просто получает маршрут без найденной ошибки.
Любая помощь будет отличной, спасибо.
1 ответ
Поскольку вы ограничили свои ресурсы, вы фактически не имеете прямого доступа к агентам_контроллера через какие-либо действия. Поэтому вызов get 'index' на самом деле просто пытается получить доступ к /agent. Если вы попробуете это в вашем браузере, это тоже не получится.
Чтобы добиться успеха, вам нужно указать следующий параметр:
get 'index', { :location => 'hawaii' }
Надеюсь, это поможет.
Редактировать: если вам нужен дополнительный доступ к агенту_контроллера (то есть местоположение не обязательно), просто добавьте для него ресурс верхнего уровня в свой файл маршрутов:
resources :agents