2013-10-25 3 views
0

Мне нужно сделать вложенные страницы (например, когда одна страница (страница1) является родительской для другой страницы (стр. 2), а маршруты для этих страниц выглядят так: site.com/page1/page2.Какой камень должен помочь мне сделать чтоВложенные страницы с маршрутизацией

+0

Таким образом, URL-адрес страницы 7 будет: 'page1/page2/page3/page4/page5/page6/page7'? – zwippie

+0

, если его дочерний элемент для страницы6 - да –

+0

Является ли отношение между страницами 7 и страница 6, определенными в модели, или только через URL-адрес? Если он определен в модели, нет необходимости отражать это в URL-адресе. – zwippie

ответ

0

Я не знаю, если есть драгоценный камень для этого, но я хотел бы начать с маршрутом что-то вроде:

get 'pages/*parents/:page', to: 'pages#show' 

URL-адреса site.com/pages/page1/page2/page3 будет анализироваться на Params:

params[:parents] = 'page1/page2' 
params[:page] = 'page3' 

Теперь вы можете сделать что-то вроде:

parent_names = params[:parents].split('/') 

Не уверен, если это то, что вы хотите, но я надеюсь, что это поможет вам начать работу.

0

Это не обычная практика. Я не говорю, что вы не должны делать это, как я ничего о вашей бизнес-логики не знаю, но обычная практика

/model_name/:id/model_name/:id 

с не более чем на один уровень вложенности. Это означает, что нет таких вещей, как

/model_name/:id/model_name/:id/model_name/:id 

В целом, я пользуюсь как можно коротким путем. Следовательно, если ресурс можно идентифицировать только с его id, я иду с /model_name/:id. Это часто приводит к вещам, таким как

resources :post do 
    resources :comments, only: [:new, :create] 
end 

resources :comments, only: [:show, :edit, :update, :destroy] 

Я надеюсь, что помогло.

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