Rails маршрутизация и как сохранить вид категории СУХОЙ? - PullRequest
0 голосов
/ 19 февраля 2011

У меня есть модель, в которой есть принадлежность к категориям.

Пример:

  • Thing
    • принадлежит_ к категории:
  • Категория
    • has_one: вещь

Должен ли я создать файл представления для каждой категории, чтобы найти данную категорию, например:

views/things/category_name1.html.erb
views/things/category_name2.html.erb
views/things/category_name3.html.erb
views/things/category_name4.html.erb

Или есть более удобный способ сделать это?

Представления одинаковы для каждой категории, за исключением имени категории в методе find. Я пробовал это:

<%= Thing.find(:all, :conditions => {:category => 'Name of category'}) %>

Я хочу, чтобы мой URL был /category_name/name_of_thing.

Ответы [ 2 ]

2 голосов
/ 19 февраля 2011

Gem friendly_id будет обрабатывать генерацию URL, которую вы ищете. На ваших маршрутах вы захотите иметь что-то вроде (Rails 3). Вы не хотите иметь представление для каждой категории - это должно быть динамическим.

resources :categories do
  resources :things
end
1 голос
/ 19 февраля 2011

Нет!Не создавайте избыточные представления, подобные этому.

Добавьте следующий код в вашу модель Category и любую другую модель, для которой вы хотите иметь описательные URL:

def to_param
  return "#{id} #{name}".parameterize
end

Предполагая nameявляется атрибутом Category, это создаст уникальные URL, содержащие название категории.Если вы знаете, что имя определенно будет уникальным, вы можете заменить обратную строку просто name.parameterize.

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