我的类别模型有祖先。我正在使用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
而不是子类别
答案 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