Зачем использовать match, а не get при маршрутизации в Rails? - PullRequest
12 голосов
/ 23 декабря 2011

В учебнике по Ruby on Rails 3 код использует:

match '/signup',  :to => 'users#new'
match '/signin',  :to => 'sessions#new'
match '/signout', :to => 'sessions#destroy'

match '/contact', :to => 'pages#contact'
match '/about',   :to => 'pages#about'
match '/help',    :to => 'pages#help'

вместо

get '/signup',  :to => 'users#new'
get '/signin',  :to => 'sessions#new'
get '/signout', :to => 'sessions#destroy'

get '/contact', :to => 'pages#contact'
get '/about',   :to => 'pages#about'
get '/help',    :to => 'pages#help'

, хотя для всех маршрутов требуется только глагол HTTP GET.Почему бы не использовать get (или :via => [:get] на match) и ограничить действие маршрутизации на практике?

1 Ответ

23 голосов
/ 23 декабря 2011

Я бы посоветовал использовать get [...] вместо match. Как вы уже упомянули правильно, match создаст оба маршрута GET и POST. Зачем создавать их, если они вам не нужны?

Использование правильных сопоставлений (get или post) обеспечивает чистоту ваших маршрутов и помогает предотвратить нежелательное поведение вашего приложения. Последний пункт актуален, особенно для POST-маршрутов, когда вы не хотите случайно разместить ссылку GET-запрос на вашей веб-странице, за которой могут следовать поисковые роботы.

Обновление [2013-05-12]: Начиная с Rails 4.0, теперь вы обязаны явно указывать метод запроса .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...