你必须搞乱Rails的“routes.rb”文件吗?

时间:2009-01-02 20:36:50

标签: ruby-on-rails configuration rest routes

除了调用routes.rb以设置默认路由之外,我从不触摸map.root。我一直满足于使用表格的网址......

/controller/action/perhaps_an_id

它工作正常。

这会让我成为一个坏人吗?我错过了一些非常棒的东西吗?

如果我尝试采用RESTful设计怎么办?这是否意味着我必须编辑routes.rb或者我可以继续愉快地忽略它吗?

(我尝试在The Rails Way中阅读这个主题,但这是无法忍受的。)

4 个答案:

答案 0 :(得分:6)

如果您使用默认的脚手架生成资源,那么它甚至会在routes.rb中为您提供restful路由。

如果您没有使用脚手架,那么它工作的原因是默认情况下底部的默认路由:

    map.connect ':controller/:action/:id'
    map.connect ':controller/:action/:id.:format'

我一直在关注最佳做法是为生产应用程序删除这些,而是​​确保只暴露需要公开的资源。使用Rails 2.2,您甚至可以通过以下方式限制来自map.resources的RESTful方法:

map.resources :posts, :only => [:index, :show]
map.resources :comments, :except => [:edit]

你可以用嵌套资源,命名路线等做很多很酷的事情。他们在文档中有很多例子(http://www.railsbrain.com/api/rails-2.2.2/doc/index.html?a=M000255&name=resources

答案 1 :(得分:5)

没有切换到RESTful设计并不会让你成为一个坏人,如果你觉得没有必要改变,那就继续以1.x的方式编写应用程序。

大多数Rails开发人员都采用了REST,似乎对它非常满意。我认为这里不需要重复所有专业的REST参数。

您需要为路径文件添加一行资源,例如:

map.resources :posts

答案 2 :(得分:5)

您可能还想为您的营销部门制作自定义命名路线(例如:mycoolsite.com/free-trial),这些路线适用于特定的控制器和操作等。

Ryan Bates有一系列截屏视频,介绍了您可以通过路线做的一些巧妙的事情:http://railscasts.com/tags/14

答案 3 :(得分:4)

如果您要使用RESTful,是的,您必须编辑routes.rb并添加资源,例如,

map.resources :your_resource

或者如果您有嵌套资源,

    map.resources :people do |person|
      person.resources :ideas do |idea|
        ideas.resources :bad_ones
      end
    end