2012-08-11 40 views
0

我正在做Berkeley軟件作爲服務課程,並且無法計算出創建「尋找類似電影的RESTful路線」所需的內容。「沒有路線匹配」 - Ruby/Rails/Cucumber

我有這個在我的movies_controller:

def find_by_same_director 
    @movies = Movie.find_by_director params[:id] 
end 

我想這是很多變種在routes.rb中儘可能:

match 'movies/find_by_same_director/:id' => 'movies#find_by_same_director' 

但無論我做什麼我繼續運行到同樣的錯誤,當我運行我的黃瓜:

No route matches 
{:action=>"find_by_same_director",:controller=>"movies", :id=>1} 
(ActionController::RoutingError) 

我是新來的Rails,所以我想像我只是失敗了理解一個人必須做什麼才能將控制器行爲識別爲路線。任何人都可以指引我走向正確的方向嗎?

+0

一切都看起來正確。你可以發佈失敗的黃瓜代碼嗎? – Brandan 2012-08-11 16:13:05

+0

@Brandan,嗯,是的,當然,我可以把自己都混在黃瓜裏:很可能。我將編輯一些我在支持/ paths.rb中寫入的更多可疑內容...... – thesunneversets 2012-08-11 16:17:26

+0

您可以在命令提示符下運行'rake routes'並將輸出粘貼到?只有這樣我們才能看到有一條定義的路線。 – 2012-08-11 17:53:16

回答

2

config/routes.rb應該有類似或simmilar:

match '/movies/:id/directors' => 'movies#same_directors', :as => 'same_directors' 

app/controllers/movies_controller.rb應該有一個同名的行動!

def same_directors 
end 

您應該創建這樣一個觀點:

`app/views/movies/same_directors.html.haml` 

而對於黃瓜,你的features/support/paths.rb應該有這行或者simmilar:

when /^the Similar Movies page for "(.*)"$/ 
    same_directors_path(Movie.find_by_title($1)) 

這是Rails應用程序煮配方和黃瓜設置爲了解這條巧妙的路線!

+0

謝謝!添加:關於routes.rb中的匹配,似乎允許find_by_same_director_path在features/support/paths.rb中工作,我想這是我所缺少的。我發現Coursera課程有點令人沮喪,因爲看起來相當有必要獨立學習Rails和黃瓜 - 當我希望能夠通過課程學習(至少可以抓取)。 – thesunneversets 2012-08-12 19:33:59

+0

@ thesunneversets我們就是爲了這個!別客氣 :) – 2012-08-12 19:36:45

0
match 'movies/find_by_same_director/:id' => 'movies#find_by_same_director' 

變爲:

match '/movies/find_by_same_director/:id' => 'movies#find_by_same_director'