为Rails 3.0配置routes.rb

时间:2010-12-15 06:16:53

标签: ruby-on-rails

我刚刚在Mac OS X上使用Rails 3.0.3。

当我尝试按如下方式生成控制器和视图时:

 $rails generate controller testing

它在适当的地方创建了控制器。我在名为greet的同一控制器中创建了一个方法/操作,当我尝试通过浏览器访问它时:

 http://localhost:3000/testing/greet

它给了我一个错误说:

 Routing Error

 No route matches "/testing/greet"

但是,如果我在routes.rb文件中添加以下行:

 get 'testing#greet'

它工作正常,但是,我不能为我的应用程序中的每个方法添加上面的行。

请帮我解决这个问题。

谢谢!

3 个答案:

答案 0 :(得分:2)

他并没有过于复杂化。

假设测试是有效的,在路线中:

resources :testings do
  # for individual /testing/1/greet
  member do
    get 'greet'
  end

  # on the collection
  collection do
    get 'greet'
  end
end

答案 1 :(得分:0)

你的路由过于复杂。请阅读Routing Guide了解启示。

答案 2 :(得分:-1)

如果你是从Rails 2.x转到Rails 3.0,你的routes.rb文件可能会遗漏这一行:

 match ':controller/:action'

在Rails 2.x中,这一行是:

 map.connect ':controller/:action'

由于路由API的更改和Action Dispatch的引入,您需要在routes.rb文件中添加第一行以自动映射每个方法。

PS:请记住,如果您需要覆盖上述路由,则需要在此行上方声明路由命令,因为Rails路由中的优先级采用自下而上的方法。

谢谢!