Rails 3: Как проверить область действия роутера? - PullRequest
0 голосов
/ 14 сентября 2010

Я использую 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 Ответ

1 голос
/ 15 сентября 2010

Поскольку вы ограничили свои ресурсы, у вас фактически нет прямого доступа к агенту_контроллера через какие-либо действия.Поэтому вызов get 'index' на самом деле просто пытается получить доступ к / agent.Если вы попробуете это в своем браузере, это также приведет к сбою.

Чтобы добиться успеха, вам нужно указать следующий параметр:

get 'index', { :location => 'hawaii' }

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

Редактировать: Если вам нужен дополнительный доступ к агенту_агентов (что означает, что местоположение не обязательно), просто добавьте ресурс верхнего уровня для него в файле маршрутов:

resources :agents
...