У меня есть одну модель:рельсов - как сделать вложенный маршрут с родословной
class Page < ActiveRecord::Base
has_ancestry
validates :slug, :name, uniqueness: true, presence: true
before_validation :generate_slug
def to_param
slug
end
def generate_slug
self.slug = Russian.translit(name).parameterize
end
end
и я использую ancestry
камень для создания дерева страниц и подстраниц, т.е. страницы может иметь несколько подстраниц и суб - страницы могут также иметь несколько подстраниц и т. д. до бесконечности.
Но моя проблема в том, что я не могу сделать что-то /page-1/page-1-2/page-1-2-1
. На всех подстраницах есть URL-адрес: /page-1-2
или /page-1-3-1
.
Моего routes.rb:
Rails.application.routes.draw do
get '/pages' => 'pages#index'
resources :pages, path: "", path_names: { new: 'add' }
root 'pages#index'
end
Как сделать вложенную URL?
Спасибо!
Это работает, ТНХ! Но когда я хочу редактировать что-то подстраницу, я поймал ошибку 'ActiveRecord :: RecordNotFound' и' Параметры: {"slug" => "page-1/page-1-1/page-1-1-1/page-1 -1-1-1/редактировать "}'. Как я могу решить эту проблему? – jazzis18
Вам нужно использовать 'Page.find_by_slug (params ['slug'])'. Кроме того, не забудьте [принять ответ] (https://stackoverflow.com/tour), если это поможет. – Surya
Извините) Да, я использовал его 'find_by_slug', но я все равно поймаю эту ошибку. – jazzis18