Drupal-подобная система маршрутизации в Rails - PullRequest
1 голос
/ 30 апреля 2011

Я пытаюсь найти рекомендацию , позволяющую пользователям определять маршрут к своим страницам в Rails, записывая их в текстовое поле при отправке сообщений, как в модуле Path в Drupal ( да, мы портируем сайт Drupal на Rails)

Итак, мне нужно

  • определить новый именованный маршрут при отправке статьи (например, http://www.domain.com/a-day-in-annas-life)
  • изменить существующий маршрут при редактировании статьи, если они определяют новый, путем перенаправления 301 со старого маршрута на новый

Как мне лучше всего этого добиться?

1 Ответ

0 голосов
/ 08 июля 2011

Хорошо, я нашел способ, но если это будет лучше или нет, я не могу сказать.

Я использую пользовательский ограничитель, как это:

  class CharitiesRestrictor
    def self.matches?(request)
      slug = request.path_parameters[:path]
      !Charity.find_by_name(slug).nil?
    end
  end

  constraints CharitiesRestrictor do
    match  '*path' => 'charities#show_by_slug', :constraints => CharitiesRestrictor.new
  end

Когда я создаю такой блок для каждой из моих пар модель / контроллер, которые должны быть в состоянии реагировать на постоянные ссылки, я могу дать им всем возможность воздействовать на постоянную ссылку. Однако это также означает, что все они вызываются последовательно, что не обязательно идеально.

...