0

我试图在我的视图对象中显示来自两个 ActiveRecord 模型的值。这些模型的相关之处在于一个Item可以有多个ItemTags. 我的代码描述如下:

模型 #1 - item_tags.rb

 class ItemTags < ActiveRecord::Base
   attr_accessible :ItemID, :tag
   belongs_to :item
 end

模型 #2 - item.rb

 class Item < ActiveRecord::Base
   attr_accessible :title, :visible

   has_many :item_tags

 end

我有一个控制器,它有一个索引方法,我定义为:

 def index
 @item = Item.all
 logger.debug "#{@item.inspect}"

 end

当我在控制台中查看我的项目的输出时,一切似乎都正常运行。页面加载,调试信息显示我有Items

 #<Item id: 1 ... (etc) >

调试信息还告诉我,对于每个项目,看起来好像我正在执行ItemTags Load. 这一切对我来说似乎都有意义,但由于某种原因,我不能或可能没有尝试过正确的语法来访问我的视图页面上的item_tags 。我想知道以下内容:

  1. 在控制台中,如何查看每个item_tag正在加载哪些项目?同样,我可以看到ItemTags Load每个项目都在运行,但我没有看到控制台中显示任何结果。

  2. 为我的视图中的每个项目引用我的标签的正确语法是什么?有些项目没有标签。

先感谢您。

4

1 回答 1

0

如果你真的ItemID在你的 ItemTag 模型中使用(如你的代码所说),那么答案很简单:使用item_id.

在控制器中,我会使用复数@items(不是错误,但让生活更轻松):

def index
  @items = Item.all
  logger.debug "#{@items.inspect}"
end

在控制台中,您可以通过以下方式访问第一个Item

Item.first

您可以通过以下方式访问所有item_tags第一个Item

Item.first.item_tags

查看http://xyzpub.com/en/ruby-on-rails/3.2/activerecord_has_many.html了解更多信息。

于 2013-06-24T06:29:12.620 回答