黃瓜

2010-08-26 216 views
5

路由問題,我與軌道3和黃瓜的工作,除了這個小問題黃瓜

Given I am on the "edit automobile" page 
    No route matches {:controller=>"automobiles", :action=>"edit"} (ActionController::RoutingError) 

現在的路徑在paths.rb設置爲edit_automobile_path

,並在一切都進展順利routes.rb我有汽車作爲一種資源,我腳手架它

所以請告訴我什麼,我失蹤,顯然路線定義和匹配,因爲我跑耙路線,看到了路線。

請點我在正確的方向

回答

9

在你features/support/paths.rb文件,指定你需要通過你的edit_automobile_path ID的獨特的資源這樣的路徑,你耙路線就會像

automobiles/:id/edit

,所以你需要有edit_automobile_path(:id

爲了在黃瓜做到這一點假設你有類似的東西

Given I have an automobile 
And I am on the 'edit automobile' page 

在你定步驟DEF聲明一個變量@automobile = Automobile.create()

,然後在paths.rb文件

when /edit automobile page/ 
    edit_automobile_path @automobile 
... 
+0

非常感謝你爲此,我仍然在學習,謝謝,謝謝,謝謝,好吧,回去工作 – creativeKoder 2010-08-26 17:35:22

+1

沒有問題。不要忘了,如果這個模型變成了一個嵌套的資源,你將不得不指定:automobile_id或其他什麼,因爲它不知道要查找的id,所以你將不得不改變paths.rb中的調用來處理它。 – 2010-08-26 17:55:21

1

如果你想編輯特定的汽車,我想你可以使用以下內徑paths.rb:

when /^the edit automobile for "automobile1"$/ 
    edit_automobile_path(Automobile.find_by_name(page_name.scan(/\"([^"]+)/))) 

所以它通過automobile1作爲參數find_by_name()

2

在您的特性文件,你可以做這樣的事情:

Given I have an automobile 
Then I want to visit edit automobile page for "automobile1" 

然後在你的步驟定義文件:

Then(/^I want to visit edit automobile page for "(.*?)"$/) do |auto| 
automobile = Automobile.find_by_name(auto) 
visit edit_automobile_path(automobile.id) 
end 
+0

感謝rupali這解決了我的問題。 – 2014-05-15 08:06:06

1

你可以做到這一點,如你有文件提到如下:

Given I have an automobile 
Then I want to visit edit automobile page for "automob" 

然後在您的步驟定義文件中:

Then(/^I want to visit edit automobile page for "(.*?)"$/) do |auto| 
vehicle = Automobile.find_by_name(auto) 
visit edit_automobile_path(vehicle.id) 
end