【发布时间】:2011-03-03 19:31:13
【问题描述】:
作为一个新手,我决定构建一个“家庭库存”应用程序。我现在被困在如何根据在浏览器中查看的项目类型以编程方式选择布局。
根据我的计划,到目前为止,我应该已经创建了几个模型来代表我在家中可以找到的物品类型:家具、电子产品和书籍。
class Book < ActiveRecord::Base
end
class Furniture < ActiveRecord::Base
end
class Electronic < ActiveRecord::Base
end
现在 Books 模型具有 isbn、pages、address 和 category。 Furniture 模型具有 color、price、address 和 category 等内容。 Electronics 有 name、voltage、address 和 category 等内容。 p>
这就是我感到困惑的地方。我知道属性 address 对他们所有人来说都是一样的。我也知道,我需要为 3 种不同类型的项目创建多个“布局”,以使用适当的图形和样式表显示所述项目的不同属性。
但是我将如何决定项目属于哪个类别,以便我可以确定要呈现的布局。
按照我的说法,我会这样做:
class DisplayController < ApplicationController
def display
@item = Params[:item]
if @item.category = "electronics"
render :layout => 'electronics'
end
end
在我的 routes.rb 中
map.display ':item', :controller => 'display', :action => 'display'
我似乎只关心这一点,我以后可能会添加很多类别,并认为应该有一种更 DRY 式的处理方式,而不是硬编码。
我了解我需要在布局中添加 html 标记以显示该特定类别的相关信息。
----问题----
- 这是解决此类问题的正确方法吗?
- 当我决定添加像 thinking_sphinx 这样的 gem 来运行搜索时,这种方法是否兼容。
- 您认为我的方法存在哪些问题以及如何改进。
- 我正在阅读有关“多态关联”的内容,这是否适用于这种情况,因为所有项目都存在类别?
另外,我试图获取一个路由来呈现像“http://localhost/living-room-tv”这样的 URL
【问题讨论】:
标签: ruby-on-rails