Рельсовые маршруты вопрос.Всегда находите по имени и удаляйте / class_name / из маршрута - PullRequest
0 голосов
/ 23 мая 2010

У меня есть модель категории и модель продукта.

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, но я просто не могу сделать это.

Любая помощь?

Спасибо

Николас Хок Исаза

1 Ответ

0 голосов
/ 23 мая 2010

Может быть, это поможет:

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 /' и все категории в корневом пути '/'

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...