2010-09-14 65 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

因爲你已經作用域你的資源,你實際上並沒有通過任何行動直達agents_controller。所以調用get'index'實際上只是試圖訪問/代理。如果您在瀏覽器中嘗試過,則會失敗。

要獲得成功,你必須提供一個位置PARAM像這樣:

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

希望有所幫助。

編輯:如果您想將agents_controller額外的接入(意位置是可選的),只需在你的路由文件中添加一個頂級資源爲它:

resources :agents 
+0

這是偉大的,謝謝! (我實際上認爲我嘗試了這種方式並且失敗了,但是我現在必須做出錯誤的事情,因爲它現在全部通過 - 所以歡呼) – Delameko 2010-09-15 09:11:06