Использование именованных маршрутов и использование url_for () - PullRequest
4 голосов
/ 16 февраля 2010

Когда следует использовать именованные маршруты по сравнению с использованием url_for с хешем {: controller => «somecontroller»,: action => «someaction»}?

Является ли один предпочтительнее другого и почему? Является ли еще одним обслуживаемым или более эффективным w.r.t. производительность

Ответы [ 4 ]

3 голосов
/ 16 февраля 2010

Это может помочь понять, что делают именованные маршруты.

Определение Именованного маршрута создает обертку вокруг url_for для предоставления параметров, необходимых для созданного маршрута. Маршрутизация ресурсов создает много именованных маршрутов.

С учетом этого затраты на вызов именованного маршрута в отличие от url_for с необходимыми параметрами незначительны. Так что, если вы ссылаетесь на определенный ресурс, вам нужно использовать именованные маршруты. Их легче читать, печатать и поддерживать.

Однако не стоит сбрасывать со счетов url_for. Он имеет много творческих применений благодаря тому, как он обрабатывает отсутствующие опции. Это очень полезно, когда речь идет о сохранении представлений DRY, которые используются из нескольких вложенных источников. То есть: когда у вас есть контроллер blog_posts и posts_controller, разделяющие одни и те же представления.

Я настоятельно рекомендую вам прочитать url_for документацию . Чтобы помочь выяснить, где эти места имеет смысл использовать url_for.

0 голосов
/ 17 февраля 2010

Если вы тщательно настроили свои маршруты и ресурсы, вам не нужны никакие хеш-маршруты, только именованные (встроенные через map.resource или пользовательские map.<something>). Хеш-маршруты полезны, если вам нужно создавать ссылки на основе динамического контента. Что-то вроде:

link_to @post.title, :controller => (@user.is_admin ? 'admin/posts' : 'public/posts'), :action => 'show', :id => @post

(Это просто вынужденный пример, но вы должны понять суть:)

0 голосов
/ 16 февраля 2010

названный маршрут очень аккуратный.

 map.with_options :controller => "company", :action => "show", :panel => "name" do |m|
   m.company '/company/:action/:id/:panel'
 end

Тогда вы можете позвонить

company_url :id => 1
0 голосов
/ 16 февраля 2010

Я бы предпочел именованные маршруты, так как они короче и делают то же самое.

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