СУШКА повторяющихся маршрутов для нескольких моделей - PullRequest
2 голосов
/ 19 августа 2010

У меня есть некоторые модели, такие как News and Downloads, которые имеют много комментариев: as =>: commentable. Комментарий принадлежит: комментируемо и является полиморфным. Как и комментарии, есть подписки. Итак, мои маршруты выглядят так:

resources :news do
  resources :comments do
    post :like, :on => :member
    delete :like, :on => :member
  end
  resources :subscriptions
  ...
end

resources :downloads do
  resources :comments do
    post :like, :on => :member
    delete :like, :on => :member
  end
  resources :subscriptions
  ...
end

...

Есть ли способ высушить это? Я попытался определить

def comment_resources
  resources :comments do
    # ...
  end
  resources :subscriptions
end

в начале файла rout.rb, а затем вызывая comment_resources, но мне это кажется грязным, потому что это не пространство имен / в классе правильно.

Ответы [ 2 ]

3 голосов
/ 30 октября 2012

1) Если у вас есть одинаковые внутренние маршруты как в новостях, так и в загрузках, вы можете сделать

%w(news downloads).each do |res|
  resources res do
    resources :comments do
      post :like, :on => :member
      delete :like, :on => :member
    end
    resources :subscriptions
    ...
  end
end

2) В противном случае вы можете посмотреть https://github.com/rails/routing_concerns (будет включено как частьрельсов-4):

concern :commentable do
  resources :comments do
    post :like, :on => :member
    delete :like, :on => :member
  end
  resources :subscriptions
end

resources :news, concerns: :commentable do
  ...
end
resources :downloads, concerns: :commentable do
  ...
end
0 голосов
/ 28 мая 2013

Вы были на правильном пути.Вы можете определить метод в блоке rout.draw do / end, чтобы он не запутывался в глобальном пространстве имен.

Application.routes.draw do
  def comment_resources
    resources :comments do
      post :like, :on => :member
      delete :like, :on => :member
    end
    resources :subscriptions
    ...
  end

  resources :downloads do
    comment_resources
  end

  resources :news do
    comment_resources
  end
end

взят из: http://symmetricinfinity.com/2013/04/16/drying-up-your-api-routes-in-rails.html

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