Rails Routing: в чем разница между: условиями и: требованиями в маршрутизации? - PullRequest
3 голосов
/ 07 декабря 2009

Когда я должен использовать: условия или: требования при прокладке рельсов?

Вот два примера:

: условия

map.connect "/foo/:view/:permalink", :controller => "foo",
    :action => "show", :view => /plain|fancy/,
    :permalink => /[-a-z0-9]+/,
    :conditions => { :method => :get }
end

: требования

 map.connect 'posts/index/:page',
            :controller => 'posts',
            :action => 'index',
            :requirements => {:page => /\d+/ },
            :page => nil
 end

1 Ответ

10 голосов
/ 07 декабря 2009

Единственный вариант :conditions дублей - :method (т. Е. :get, :post и т. Д.), Позволяющий вам ограничить выбор методов доступа к маршруту:

map.connect 'post/:id', :controller => 'posts', :action => 'show',
            :conditions => { :method => :get }

:requirements, с другой стороны, позволяет указать регулярное выражение, которому должен соответствовать параметр, например если параметр является почтовым индексом, вы можете задать ему регулярное выражение, соответствующее только почтовым индексам:

map.geocode 'geocode/:postalcode', :controller => 'geocode',
            :action => 'show', :requirements => { :postalcode => /\d{5}(-\d{4})?/ }

(Вы даже можете опустить :requirements и использовать эту более короткую форму:)

map.geocode 'geocode/:postalcode', :controller => 'geocode',
            :action => 'show', :postalcode => /\d{5}(-\d{4})?/

Посмотрите "Условия маршрута" и "Регулярные выражения и параметры" в ActionController :: Routing , из которого я украл приведенные выше примеры.

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