Rails路由问题。始终按名称查找并从路由中删除/ class_name /

时间:2010-05-23 02:51:54

标签: ruby-on-rails routing

我有一个分类模型和一个产品模型。

Category has_many products 

Product belongs_to Category

我希望我的路线是这样的:

/:category_type/:category_name/  opens Product#index
/:category_type/  opens Category#index

/ opens Category#index

有没有办法用资源实现这一目标?我尝试使用path_prefix,但我无法完成它。

任何帮助?

谢谢,

NicolásHockIsaza

1 个答案:

答案 0 :(得分:0)

也许这会有所帮助:

ActionController::Routing::Routes.draw do |map|

  map.category '/:category_type/', :controller => 'categories'
  map.category_products '/:category_type/:category_name/', :controller => 'products'
  map.root :controller => 'categories'

end

class CategoriesController < ApplicationController
  def index
    @categories = Category.find(:all) unless params[:category_type]
    @categories = Category.find_all_by_category_type if params[:category_type]
  end
end

class ProductsController < ApplicationController
  def index
    @category = Category.find_by_name(params[:category_name])
    @products = @category.products.find(:all)
  end
end

在这种情况下,您将按类型在'/:category_type /'和所有类别的根路径'/'

获得类别过滤类别