Есть ли способ автоматически создать множественный маршрут для индекса и единственного числа для всего остального? - PullRequest
0 голосов
/ 12 апреля 2011

При работе с ресурсом коллекции мне нравится использовать множественное число для страницы индекса (то есть списка) (просмотр многих объектов ) и единственного числа для других страниц (создать / обновить / удалить одну). object ).

Чтобы сделать это, мне, кажется, нужно создать мои маршруты следующим образом:

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"}

Это работает, но похоже, что я использую дополнительную строку в моем файле маршрутов (чтобы явно указать индексный маршрут), когда мне не нужно это делать.Есть ли способ сделать то, что я хочу в одном маршруте?Или, альтернативно, есть причина не прокладывать маршрут таким образом?

Ответы [ 2 ]

2 голосов
/ 12 апреля 2011

Единственная причина, кроме «обычного REST говорит, что нет», чтобы «объект» не был ресурсом под «объектами», это поисковые машины.

Google заметит, что у вас есть «рецепты» изатем рецепты в разделе «Рецепты» и дадим вам такие классные ссылки:

sitelinks

В Руководстве Google для веб-мастеров говорится, что в первом пункте в разделе рекомендаций по дизайну и содержанию:сайт с четкой иерархией и текстовыми ссылками. "

1 голос
/ 12 апреля 2011

RESTful маршрутизация разработана таким образом, что вы определяете, что именно вы хотите сделать. Скажем, вы идете на http://example.com/objects. Здесь вы говорите сайту, что вам нужен список объектов.

Теперь, когда вы переходите к http://example.com/objects/2, вы говорите, что хотите видеть объект с идентификатором 2 в этом списке (или ресурсе) объектов.

Наконец, когда вы переходите к http://example.com/objects/2/edit, вы говорите, что хотите снова найти объект с идентификатором 2, но на этот раз вы хотели бы отредактировать его, а не просматривать.

Идя против фактора, как вы предлагали при маршрутизации помощников, вы будете причинять огромное количество ненужной боли себе и всем, кто читает ваш код.

Однако, если вы решите пойти по этому пути (опять же, я советую против него), тогда да, определение двух маршрутов - единственный путь.

...