2016-12-07 5 views
1

Я это на routes.rbКак создать собственный маршрут внутри ресурса без перезаписи пути

resources :questions, except: [:show] do 
    get '/resource/:subject/:id', to: 'resource#show', as: "resource", param: [:name, :id] 

Он говорит, что:

Invalid название маршрута, уже используется: «ресурс» вы можете определили два маршрута с тем же именем, используя опцию :as, или вы можете быть перекрытым маршрут уже определенный ресурсом с тем же именованием

Я знаю, что ресурсы создают два маршрута с одним и тем же путем, show и destroy оба используют resource_path, как он создается внутри? и как я могу создать свой маршрут для показа, чтобы перезаписать тот, который был уничтожен?

ответ

2

Хороший способ устранения маршрутов ненужный является указанием: единственный вариант

resources :user, :only => [:edit] 

вместо

resources :user, :except => [:new, :create, :edit, :update, :show, :destroy] 
0

Мне кажется, что вы можете отобрать шоу, а затем определить маршрут, который вы хотите отдельно. Смотрите, если это работает:

resources :questions, except: :show 

get '/resource/:subject/:id', 
    to: 'resource#show', 
    as: "resource", # This is where the error is. 
    param: [:name, :id] 

EDIT: Ах, да. Параметр: as нуждается в другом имени. Это будет работать:

resources :questions, except: :show 

get '/resource/:subject/:id', 
    to: 'resource#show', 
    as: "resource_show", 
    param: [:name, :id]