0

Ruby on Rails 的新手,遇到了从舒适的 GUI IDE 辅助功能语言迁移到 RoR 的第一个真正困难。

我需要有通用数据以及模型中的类型特定数据。这些类型需要在数量上不受限制并且用户可以定义。

例如,一件设备(套件)可以是车辆、气体检测器或任何其他类型。如果是车辆,则类型特定数据可能包括注册号、注册更新日期、气瓶数量等。如果是气体检测器,则可能是它检测到的气体类型、气瓶中的气体量等。

我有一个模型“KitTypes”,它记录了每种类型的特定套件数据的标签,这些数据可以为该类型的套件记录,如下所示。

class KitType < ActiveRecord::Base
  attr_accessible :name, 
    :info_label_1, :info_label_2, :info_label_3,  
    :date_label_1, :date_label_2, :date_label_3, 
    :num_label_1, :num_label_2, :num_label_3 
  has_many :kits
end

设备(套件)信息存储在与以下类似的套件模型中。特定于类型的字段名称是 info_n、date_n、num_n 字段。

class Kit < ActiveRecord::Base
  attr_accessible :kit_type_id, :location_id, :code, :brand, :model, :serial, 
    :purchased, :purchase_price, :warranty_expiry, :decommission_date, :notes, 
    :info_1, :info_2, :info_3,
    :date_1, :date_2, :date_3,  
    :num_1, :num_2, :num_3
  belongs_to :kit_type
  belongs_to :location
end

匹配的 KitType 记录包含应显示在匹配编号的 Kit 数据旁边的显示标签。

以前我会在一个视图中显示通用信息,在单独的视图中显示类型特定信息。即用户需要在一个网格中查看所有设备,但特定类型的数据仅在查看相同类型的记录或单个记录时才有意义。此外,通常只有带有 KitType 标签数据的 Kit 字段是可见的,尽管在这个阶段这并不是最重要的。

我可以将特定类型的数据分离到另一个模型中,但我认为这对我没有多大帮助,而且它仍然不能解决我的适应性标签问题。

我如何在 Rails 中做类似的事情(还不是专家),还是我做错了?

4

1 回答 1

0

忘记了我这个长长的新手问题。所以我想我会展示我做了什么。

最后,我将这样的添加代码添加到我的 Kit 模型(kit.rb)中

def info_lbl_1
  if !self.kit_type.blank?
    "N/A"
    if !self.kit_type.info_label_1.blank?
      self.kit_type.info_label_1
    end
  end
end
.....

对于每个类型标签,依此类推。如果没有标签,则返回 N/A(不适用)。

然后在套件显示视图(show.html.erb)中,我添加了逻辑来显示标签,如下所示:

<% if @kit.info_lbl_1 !='N/A' %>
  <dt><strong><%= @kit.info_lbl_1 %>:</strong></dt>
  <dd><%= @kit.info_1 %></dd>
<% end %>
....

因此,自定义类型特定标签的相应标签会显示,并且仅当存在自定义标签时才会显示数据。

我敢肯定,当我变得更有经验时,我会重新考虑它,这样我就不必通过帮助程序等为每个标签做代码段,但我最初的尝试失败了。

于 2013-07-11T12:34:58.900 回答