Вложенная маршрутизация в Ruby on Rails

Мой образцовый класс:

class Category < ActiveRecord::Base
  acts_as_nested_set
  has_many :children, :foreign_key => "parent_id", :class_name => 'Category'
  belongs_to :parent, :foreign_key => "parent_id", :class_name => 'Category' 


  def to_param
    slug
  end
end

Это возможный иметь такой рекурсивный маршрут как это: /root_category_slug/child_category_slug/child_of_a_child_category_slug ... и так один

Спасибо за любую справку :)

7
задан vooD 1 April 2010 в 08:41
поделиться

3 ответа

Вы можете сделать это с помощью обычных маршрутов и Route Globbing , например,

map.connect 'categories/*slugs', :controller => 'categories', :action => 'show_deeply_nested_category'

Затем в вашем контроллере

def show_deeply_nested_category
  do_something = params[:slugs]  # contains an array of the path segments
end

Однако обратите внимание, что вложенный ресурс маршрутизация более чем на один уровень не рекомендуется.

4
ответ дан 7 December 2019 в 07:42
поделиться

Это непросто (читайте: я не знаю, как это сделать) и не рекомендуется. Представьте, что у вас есть 10 категорий, и вы не хотите, чтобы URL-адрес был / categorya / categoryb / categoryc / categoryd / categorye / categoryf / categoryg / categoryh / categoryi / categoryj .

Возможно, максимальный уровень 3 предоставит вам желаемую мощность, не загрязняя URL-адрес?

0
ответ дан 7 December 2019 в 07:42
поделиться

Я сомневаюсь в этом, и это не очень хорошая идея. Код Rails Route mapping достаточно сложен без необходимости динамически пытаться кодировать и декодировать (возможно) бесконечные строки маршрутов.

2
ответ дан 7 December 2019 в 07:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: