2016-01-14 5 views
0

У меня есть столкновение с маршрутами, которое я ожидал, но я не могу понять, как на мелководье вложить ресурс, чтобы получить желаемый результат. (Или, по крайней мере, я думаю, что неглубоко вложенности, что должно быть сделано)Невозможно выяснить, как настроить эту маршрутизацию с использованием неглубокой вложенности

У меня эти 2 URLs столкновение

category_item показать страницу

guides/:guide_id/categories/:category_id/:id 

столкновение с категорией редактирования, новый и т.д .. страницы

/guides/:guide_id/categories/:id/edit 

Я использую дружественный камень ID так думает 'изменить' является: идентификатор

Я хочу изменить структуру category_item URL-адрес для

guides/:guide_id/:category_id/:id 

(минус/категории для category_item)

Это означает, что страницы, которые отображаются для большинства людей и подхвачены поисковыми роботами имеют более короткие красивее URLs и он останавливает обращение URL-адресов.

Я просто не могу допустить, чтобы это произошло.

здесь маршрут

resources :guides do 
    resources :categories,  only: [:new, :create, :edit, :update] do 
     resources :category_items, path: "", shallow: true, only: [:update, :new, :create, :edit, :show] 
     resources :category_item_keys, path: "keys", only: [:update, :new, :create] do 
      get :edit, on: :collection #-> url.com/guides/:guide_id/:category_id/keys/edit 
     end 
    end 
end 

Я только хочу, чтобы/категории должны быть удалены для category_items, если это возможно.

ответ

0

Вы можете просто сделать отдельный маршрут для него, как это:

resources :guides do 
    resources :categories,  only: [:new, :create, :edit, :update] do 
    resources :category_items, path: "", only: [:update, :new, :create, :edit, :show] 
    resources :category_item_keys, path: "keys", only: [:update, :new, :create] 
    end 
end 
get 'guides/:guide_id/:category_id/keys/edit', to: 'controllerName#actionName', as: :your_custom_path_name 
0

Существует лучший способ:

resources :guides do 
    resources :categories, except: [:delete] do 
    resources :items, controller: 'category_items', except: [:delete] 
    resources :item_keys, controller: 'category_item_keys', only: [:update, :new, :create] do 
     get :edit, to: 'category_item_keys#edit' 
    end 
    end 
end