2015-04-27 3 views
1

Я хочу иметь вложенный get внутри блока resources. Таким образом, у меня есть следующие маршруты:
/businesses/page/:page
и
/businesses/sold/page/:page
Но я не могу понять, как заставить его работать. Вот мои маршруты:Вложенные маршруты получения

concern :pageable do 
    get 'page/:page', action: 'index', on: :collection 
end 

resources :businesses, only: [:index, :show] do 
    concerns :pageable 

    get 'sold', action: 'sold', on: :collection, as: 'sold' do 
    get 'page/:page', action: 'sold' 
    end 
end 

Как это сделать?
ОБНОВЛЕНИЕ: Я хочу, чтобы вышеуказанные маршруты работали. С моим текущим кодом выше, я не получаю /businesses/sold/page/:page. Они не перечислены в rake routes:

  GET /businesses/page/:page(.:format) businesses#index 
sold_businesses GET /businesses/sold(.:format)  businesses#sold 
businesses GET /businesses(.:format)    businesses#index 
business GET /businesses/:id(.:format)   businesses#show 

Я использую page в маршрутах пагинацией. Я хочу использовать только 1 контроллер для всех этих маршрутов - BusinessesController.

UPDATE2: мне удалось получить маршруты мне нужно, но этот код выглядит некрасиво:

get 'sold', action: 'sold', on: :collection, as: 'sold' 
collection do 
    scope 'sold' do 
    get 'page/:page', action: 'sold' 
    end 
end 

Как реорганизовать его?

+1

Итак, где проблема? –

+0

Пожалуйста, опубликуйте результаты из $ rake routes. – Elvn

+0

@ValerieAsensio обновленный вопрос – leemour

ответ

0
resources :businesses do 
    concerns :pageable do 
    collection do 
     get: 'sold' 
    end 
    end 
end 

Я не уверен, что вы просите, но я думаю, что вы хотите разбивать страницы на свои проданные.

+0

Он не предоставляет маршруты '/ business/sold/page /: page' – leemour

1

Требуется пространство имен для СУШКИ, но похоже, что это более эффективно.

resources :businesses do 
    get 'page/:page', on: :collection, action: :index 
    get 'sold/page/:page', on: :collection, action: :index 
end 
+0

Спасибо, но мне не нужен ресурс, называемый страницами. Я использую' page' в маршрутах для разбивки на страницы. Я думал о namespacing 'sold', но не знаю, как это сделать правильно с' sold_businesses_path', и я хочу использовать только 1 контроллер для всех этих маршрутов - BusinessesController. – leemour

+0

А я вижу. Почему бы не использовать 'will_paginate' или' kaminari' для разбивки на страницы? Таким образом вам нужно только настроить индексный маршрут. Также предложит сохранить их в отдельных контроллерах, поскольку это уменьшит условную логику в каждом контроллере. – fylooi

+0

Я использую kaminari. Я не просто хочу использовать '? Page = 1' в url – leemour