2014-12-12 1 views
0

Я два контроллера Stores и Stocks и маршруты для этих двух контроллера приведен ниже:Как создать чистый URL-адрес в реестре вложенного ресурса?

resources :stores do 
    resources :stocks,param: :product_id,:only=>[:index] do 
     get '/:product_id', to: 'stocks#index' 
    end 
    end 

rake routes После я получаю путь, как:

GET /stores/:store_id/stocks/:stock_id/:product_id(.:format)

Но я хочу, чтобы удалить :stock_id, с тем чтобы результирующий путь был следующим:

GET /stores/:store_id/stocks/:product_id(.:format)

Если возможно, то, пожалуйста, помогите.

+0

Но если продукт вложен под определенный запас, как вы идентифицируете продукт, не указывая идентификатор запаса? – slhck

+0

Нет, на самом деле мне нужны все запасы для этого конкретного продукта этого магазина. –

ответ

1

Попробуйте это:

resources :stores do 
    resources :stocks, except: :index do 
    get '/:product_id', to: 'stocks#index', on: :collection 
    end 
end 

Это даст вам:

GET /stores/:store_id/stocks/:product_id(.:format) stocks#index 

если вы хотите по умолчанию действие индекса также тогда:

resources :stores do 
    resources :stocks do 
    get '/:product_id', to: 'stocks#index', on: :collection 
    end 
end 

Это даст вам как индекс:

   GET /stores/:store_id/stocks/:product_id(.:format) stocks#index 
store_stocks GET /stores/:store_id/stocks(.:format)    stocks#index 
+0

Спасибо, что работает. –

Смежные вопросы