【问题标题】:Do you have to mess with Rails's "routes.rb" file?你必须弄乱 Rails 的“routes.rb”文件吗?
【发布时间】:2023-03-05 00:09:02
【问题描述】:

除了调用map.root 设置默认路由之外,我从不接触routes.rb。我一直满足于使用这种形式的 URL...

/controller/action/perhaps_an_id

而且效果很好。

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

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

(我试图在 The Rails Way 中阅读有关此主题的内容,但无法忍受。)

【问题讨论】:

    标签: ruby-on-rails configuration rest routes


    【解决方案1】:

    如果您使用默认脚手架生成资源,那么它甚至会在 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)

    【讨论】:

      【解决方案2】:

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

      Ryan Bates 的一系列截屏视频介绍了您可以对路线进行的一些巧妙操作:http://railscasts.com/tags/14

      【讨论】:

        【解决方案3】:

        没有切换到 RESTful 设计并不会让您成为一个坏人,如果您觉得不需要更改,请继续使用 1.x 方式编写您的应用程序。

        大多数 Rails 开发人员都采用了 REST,并且似乎对此感到非常高兴。我认为这里没有必要重复所有支持 REST 的论点。

        您确实需要在路由文件中为每个资源添加一行,例如:

        map.resources :posts
        

        【讨论】:

        • 不,不是拖钓。我真的很想知道。
        【解决方案4】:

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

        map.resources :your_resource
        

        或者如果你有嵌套资源,

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

        【讨论】:

          猜你喜欢
          • 2012-01-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-10-08
          • 2014-07-20
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多