Rails slug为祖先模型

时间:2011-07-13 10:48:47

标签: ruby-on-rails routing tree slug

我的类别模型有祖先。我正在使用slug gem。 目前我有以下内容:

class Category < ActiveRecord::Base
  slug :name
end


class CategoriesController < ApplicationController
  inherit_resources
  defaults :finder => :find_by_slug
  def show
    @category = Category.find_by_slug(params['category_id'])
    show!
  end
end

  match "categories/:category_id" => 'categories#show', :as => :category

这很好,但我想显示父/子路径,而不是 / children

如果我的类别有父母。如何达到这个目标?

例如我有宝马类和x5作为子类别。  我现在有这样的链接:{0}用于宝马,/categories/bmw用于x5。我需要此链接/categories/x5而不是子类别

2 个答案:

答案 0 :(得分:0)

您可以将match语句嵌套在父资源中(至少在Rails 3中):

resources :things do
  match "categories/:category_id" => 'categories#show', :as => :category
end

这应创建一个类似/things/:thing_id/categories/:category_id

的路线

答案 1 :(得分:0)

match "categories/:category_id" => 'categories#show', :as => :category_short
match "categories/:category/:category_id" => 'categories#show', :as => :category_long

  def category_path(category)
    unless category.is_root?
      category_long_path category.parent, category
    else
      category_short_path category
    end
  end