我正在做一個簡單的測試項目,爲我的測試做好準備。 我對嵌套資源相當陌生,在我的例子中,我有一個newsitem,每個newsitem都有註釋。功能測試中的路由問題
路由看起來是這樣的:
resources :comments
resources :newsitems do
resources :comments
end
我設置了功能測試在此刻意見,我遇到了一些問題。
這將得到一個newsitem的評論的索引。 @newsitem在c的設置中聲明。
test "should get index" do
get :index,:newsitem_id => @newsitem
assert_response :success
assert_not_nil assigns(:newsitem)
end
但問題出現在這裏,在「應該得到新的」。
test "should get new" do
get new_newsitem_comment_path(@newsitem)
assert_response :success
end
我收到以下錯誤消息。
ActionController::RoutingError: No route matches {:controller=>"comments", :action=>"/newsitems/1/comments/new"}
但是,當我看着路由表中,我看到:
new_newsitem_comment GET /newsitems/:newsitem_id/comments/new(.:format) {:action=>"new", :controller=>"comments"}
我不能使用名稱路徑或我在做什麼錯在這裏?
在此先感謝。
還是一樣problemen。 我使用的是 get:index,{:controller =>「/ comments」,:newsitem_id => @newsitem} 現在它不返回任何錯誤。但這隻會讓我到主機:端口/評論/新的權利?但是,這不應該成爲一個問題,因爲我給它的新網站正確嗎? 只是發現它很奇怪,爲什麼我不能使用路徑:s – Wishmaster 2011-01-06 14:12:39
鑑於你實際上指定`routes.rb`中的嵌套資源,我認爲你應該完全刪除該行。 Rails應該爲你建立一條命名路徑。檢查`rake routes`的輸出,但它應該是`new_newsitem_comment`類似的東西 – 2011-01-06 14:38:31