в Ruby on Rails делает ли map.resources: истории сразу сделать Story RESTful? - PullRequest
1 голос
/ 24 мая 2009

Я читал Simply Rails от Патрика Ленца ... может быть, я что-то упустил, кажется, что всякий раз, когда мы ставим

map.resources :stories

в route.rb

тогда немедленно у контроллера будет специальное соглашение, и теперь Story - это ресурс RESTful? Может быть, автор использовал слово ресурс, но не упомянул, что это RESTful, но это одно и то же?

Ответы [ 3 ]

4 голосов
/ 24 мая 2009

Наличие этого в маршрутах означает, что вы автоматически получаете некоторые стандартные маршруты, которые помогут вам создать спокойное приложение. Например:

 new_story GET     /story/new(.:format)  {:action=>"new", :controller=>"stories"}
edit_story GET     /story/edit(.:format) {:action=>"edit", :controller=>"stories"}
     story GET     /story(.:format)      {:action=>"show", :controller=>"stories"}
           PUT     /story(.:format)      {:action=>"update", :controller=>"stories"}
           DELETE  /story(.:format)      {:action=>"destroy", :controller=>"stories"}
           POST    /story(.:format)      {:action=>"create", :controller=>"stories"}

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

Чтобы посмотреть, что доступно по маршруту, вы можете перейти в папку вашего приложения и дать команду:

rake routes

Это выведет все доступные вам пути на основе того, что вы ввели в свой файл маршрутов.

2 голосов
/ 09 сентября 2009

НО !!! Если у вас есть другие действия в вашем контроллере, они НЕ будут найдены, если вы не введете дополнительные маршруты НАД этой строкой .resources!

Так что если у вас есть действие под названием turn_page в контроллере историй, вам нужно добавить строку map.connect перед строкой map.resources - как в этом фрагменте:

map.connect 'stories/turn_page', :controller => 'stories', :action => 'turn_page'
map.resources :stories

Надеюсь, это кому-нибудь поможет! Я застрял на несколько часов, работая над этим, поскольку все примеры - ЛИБО "обычные" маршруты ИЛИ набор REST, определенный с помощью оператора .resources!

1 голос
/ 24 мая 2009

Да. Как только вы добавите это к своим маршрутам, ваш контроллер Story будет реагировать на общие глаголы REST ожидаемым образом.

...