我刚刚在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'
它工作正常,但是,我不能为我的应用程序中的每个方法添加上面的行。
请帮我解决这个问题。
谢谢!
答案 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路由中的优先级采用自下而上的方法。
谢谢!