Я пытаюсь создать путь, например product/:id/monthly/revenue/
и product/:id/monthly/items_sold
, и эквивалентные именованные маршруты product_monthly_revenue
и product_monthly_items_sold
, и эти маршруты будут просто отображать диаграммы. Я попытался
resources :products do
scope 'monthly' do
match 'revenue', to: "charts#monthly_revenue", via: 'get'
match 'items_sold', to: "charts#monthly_items_sold", via: 'get'
end
end
Но это дает мне маршруты:
product_revenue GET /monthly/products/:product_id/revenue(.:format) charts#monthly_revenue
product_items_sold GET /monthly/products/:product_id/items_sold(.:format) charts#monthly_items_sold
где monthly
вместо этого добавляется впереди, а именование маршрутов отключено. Я знаю, что мог бы просто сделать:
resources :products do
match 'monthly/revenue', to: "charts#monthly_revenue", via: 'get', as: :monthly_revenue
match 'monthly/items_sold', to: "charts#monthly_items_sold", via: 'get', as: :monthly_items_sold
end
но это не СУХОЕ, и это сходит с ума, когда я пытаюсь добавить больше категорий, например, ежегодно. Использование пространства имен заставит меня создавать новый контроллер для каждого пространства имен, когда я хочу объединить все диаграммы в один контроллер.
Итак, я предполагаю, что обобщенный вопрос будет таким: возможно ли создавать маршруты пространства имен без контроллеров пространства имен? Или можно закрепить создание категорий именованных маршрутов?
Изменить: использование
resources :products do
scope "monthly", as: :monthly, path: "monthly" do
match 'revenue', to: "charts#monthly_revenue", via: 'get'
match 'items_sold', to: "charts#monthly_items_sold", via: 'get'
end
end
дал бы мне маршруты
monthly_product_revenue GET /monthly/products/:product_id/revenue(.:format) charts#monthly_revenue
monthly_product_items_sold GET /monthly/products/:product_id/items_sold(.:format) charts#monthly_items_sold
что похоже на первый блок, неожиданно, потому что я ожидаю, что если область вложена в блок ресурсов, только маршруты в блоке области будут затронуты областью, а не блоком ресурсов.
Изменить 2: забыл включить эту информацию ранее, но я использую Rails 4.0.0 с Ruby 2.0.0-p247.