“没有路线匹配” - Ruby / Rails / Cucumber

时间:2012-08-11 15:59:02

标签: ruby-on-rails ruby routes cucumber

我正在做伯克利软件即服务课程,而且无法找到创建“寻找类似电影的RESTful路线”所需的内容。

我在我的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的新手,所以我想我无法正确理解将控制器操作识别为路由所必须做的事情。任何人都可以指出我正确的方向吗?

2 个答案:

答案 0 :(得分:2)

你的config/routes.rb应该有类似或类似的东西:

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应该有这条​​线或者类似的:

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

这是rails app cook recipe和用于了解exatcly路线的黄瓜设置!

答案 1 :(得分: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'