我的路线有资源:家,但是rspec说路线没有定义?

时间:2010-12-02 02:51:16

标签: ruby-on-rails rspec

我的家庭控制器有:

def about()
end

我有一个关于GET'关于'的rspec测试,但它没有说没有匹配的路线。

不映射控制器中的所有操作:

resources :home

还是我必须明确说明家庭控制器中的每个动作?

2 个答案:

答案 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中的路由是它自己的野兽。最近有很多关于它的问题,所以我创建了一篇非常详细的文章,其中包含代码示例以帮助其他人:

Routing in Ruby on 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助手。