【问题标题】:Is there a way to automatically create a plural route for index and singular for everything else?有没有办法自动为索引创建复数路由,为其他所有内容创建单数路由?
【发布时间】:2011-08-03 09:40:23
【问题描述】:

在处理集合资源时,我喜欢对索引(即列表)页面(查看许多对象)使用复数,而对其他页面(创建/更新/删除)使用单数一个对象)。

为此,我似乎必须像这样创建我的路线:

map.objects 'objects.:format', :controller => :object, :action => :index, :conditions => { :method => :get }
map.resources :object, :controller => :object, :except => :index

这样创建路由:

     objects GET    /objects(.:format)          {:action=>"index", :controller=>"object"}
object_index POST   /object(.:format)           {:action=>"create", :controller=>"object"}
  new_object GET    /object/new(.:format)       {:action=>"new", :controller=>"object"}
 edit_object GET    /object/:id/edit(.:format)  {:action=>"edit", :controller=>"object"}
      object GET    /object/:id(.:format)       {:action=>"show", :controller=>"object"}
             PUT    /object/:id(.:format)       {:action=>"update", :controller=>"object"}
             DELETE /object/:id(.:format)       {:action=>"destroy", :controller=>"object"}

它有效,但似乎我在我的路由文件中使用了额外的行(以明确指定索引路由),而我不应该这样做。有没有办法在一条路线上做我想做的事?或者,是否有理由不采用这种方式?

【问题讨论】:

    标签: ruby-on-rails resources routing


    【解决方案1】:

    除了“正常的 REST 说不”之外,“对象”不是“对象”下的资源的唯一原因是搜索引擎。

    Google 会注意到您有“食谱”,然后是“食谱”下的食谱,并为您提供那些很酷的附加链接:

    Google 的网站管理员指南说,在 正在设计的第一个项目和 内容指南,“使用 清晰的层次结构和文本链接。”

    【讨论】:

      【解决方案2】:

      RESTful 路由的设计方式是,您可以缩小自己想要做的事情的范围。假设你去http://example.com/objects。在这里,你告诉网站你想要一个列表对象。

      现在,当您转到 http://example.com/objects/2 时,您会告诉它您希望在该对象列表(或资源)中查看标识符为 2 的对象。

      最后,当您转到http://example.com/objects/2/edit 时,您是说您想再次找到标识符为 2 的对象,但这次您想编辑它而不是查看它。

      像您在路由助手中建议的那样违背常规,您将为自己和其他阅读您的代码的人造成大量不必要的痛苦。

      但是,如果您确实选择走这条路(同样,我不建议这样做),那么是的,定义两条路线是唯一的方法。

      【讨论】:

      • @Ryan,我确实了解 RESTful 路由的工作原理,但我不同意让 URL 更有意义(从英语的角度来看),除了在您提到的路线文件。从不了解或不关心 REST 的用户的角度来看,/objects 是列表页面可能会更清楚一点,而/object/2 指的是 ID 为 2 的对象(无论是否使用数字 ID用户友好是另一回事)
      • @Daniel:如果你认为用户那么关心 URL,那么为什么 ebay 有这么糟糕的 URL,但仍然成功?老实说,你花了太多时间思考一个没人会注意到/关心的问题。
      • @Ryan 我同意 Daniel 的观点,我认为 URL 制作对于高级用户以及让用户猜测系统设置方式的能力非常重要。搜索引擎优化以及这里的因素。
      • @Jesse:恕我直言,我认为我的用户足够聪明,能够阅读我的 URL 并发现它们是复数词并且很容易适应。连SO都拥有多元化的“资源”,为何与主流相差如此之少?
      • @Ryan -- 我是说我喜欢 SO 的结构,并且 URL 结构很重要...如果您同意,那么我们就在同一个页面上。我不会做 /objects 和 /object/23
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多