2010-09-14 3 views
0

Я использую Rails 3.0 и я следующий в моем routes.rb файлов:Rails 3: Как проверить область маршрутизатора?

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' на самом деле просто пытается получить доступ/агенты. Если вы попробуете это в своем браузере, это тоже сработает.

Чтобы получить успех вы должны поставить расположение параметров, как так:

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

Надежда, что помогает.

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

resources :agents 
+0

Это здорово, спасибо! (Я на самом деле думал, что я пробовал это, и это провалилось, но я, должно быть, сделал что-то не так, как все проходит сейчас - так ура) – Delameko

Смежные вопросы