Будучи новичком, я решил создать приложение «Домашний инвентарь».Теперь я застрял на том, как программно выбрать макет на основе того, какой тип элемента он отображается при просмотре в браузере.
В соответствии с моим планом, до сих пор я должен был создать несколько моделей для представления типов элементов.предметы, которые я могу найти в своем доме: Мебель , Электроника и Книги .
class Book < ActiveRecord::Base
end
class Furniture < ActiveRecord::Base
end
class Electronic < ActiveRecord::Base
end
Теперь Книги Модель имеет такие вещи, как isbn , страницы , адрес и категория . Мебель модель имеет такие вещи, как цвет , цена , адрес и категория . Электроника имеет такие вещи, как имя , напряжение , адрес и категория .
Вот где я запутался .Я знаю, что свойство адрес будет одинаковым для всех из них.Я также знаю, что мне нужно будет создать несколько «макетов» для 3 различных типов элементов, чтобы показать различные свойства указанных элементов с соответствующей графикой и таблицами стилей.
Но как мне решить, какую категориюЭлемент, так что я могу определить, какой макет для визуализации.
По моему мнению, вот как я это сделаю:
class DisplayController < ApplicationController
def display
@item = Params[:item]
if @item.category = "electronics"
render :layout => 'electronics'
end
end
В моем rout.rb
map.display ':item', :controller => 'display', :action => 'display'
Кажется, у меня есть только одна проблема в этом, я, вероятно, добавлю много категорий позже и думаю, что должен быть более СУХОЙ способ решения, а не жесткое их кодирование.
Я понимаю, чтоМне нужно добавить в макет HTML-теги для отображения соответствующей информации для этой конкретной категории.
---- Вопросы ----
- Этоправильный подход к решению проблем такого типа.
- Будет ли этот подход совместимым, когда я решу добавить камень, например inking_sphinx , для запуска поиска.
- Какие проблемы у вас возникают?смотри с моего одобренияах, и как мне сделать его лучше.
- Я читал кое-что о "Полиморфной ассоциации", применимо ли это в этом случае, поскольку категория существует для всех элементов?
Также,Я пытался получить маршруты для отображения URL, например "http://localhost/living-room-tv"