我的家庭控制器有:
def about()
end
我有一个关于GET'关于'的rspec测试,但它没有说没有匹配的路线。
不映射控制器中的所有操作:
resources :home
还是我必须明确说明家庭控制器中的每个动作?
答案 0 :(得分:2)
resources :home
设置默认的RESTful路由 - 索引,显示,新建,创建,编辑,更新和销毁。必须指定任何其他路线。看起来你正在添加一个简单的收集路线,所以你要指定它:
resources :home
collection do
get 'about'
end
end
这会给你的路线'/ home / about'。我假设这是Rails 3.如果你在Rails 2.x中,那就这样做:
map.resources :home, :collection => {:about => :get}
从命令行,您始终可以使用此命令查看可用的路由:
rake routes
我希望这有帮助!
编辑:如果您想要默认路线,可以添加以下内容:
match ':controller(/:action(/:id))'
这是一个匹配任何通用请求的默认路由。
完整文章:Rails 3中的路由是它自己的野兽。最近有很多关于它的问题,所以我创建了一篇非常详细的文章,其中包含代码示例以帮助其他人:
我创建了一个伴随的Rails 3应用程序,可以下载来玩,以及:
https://github.com/kconrails/rails3_routing
如果您有任何疑问,请点击我的网站并询问。谢谢!
答案 1 :(得分:0)
资源将为您提供控制器的7种CRUD方法,如果您需要其他操作,则需要执行以下操作:
resources :homes do
collection do
match "about" => "homes#about", :as => "about"
end
end
然后你还可以获得额外的about_homes_path / url助手。