2012-08-11 76 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'