【问题标题】:Can't display field of referenced mongo document in rails3无法在 rails3 中显示引用的 mongo 文档的字段
【发布时间】:2010-11-09 02:30:46
【问题描述】:

我正在开发一个待办事项应用程序,以练习使用 Rails3 和 MongoDB。

我有一个项目,它是一个标签,一个标签将有许多与之关联的项目。

我的问题:show.html.erb 不想显示标签名称。

# models/item.rb
class Item
 include Mongoid::Document
 field :name
 field :completed, :type => Boolean
 referenced_in :tag  
end

# models/tag.rb
class Tag
 include Mongoid::Document
 field :name
 key :name
 references_many :items
end

# items_controller.rb
 def show
    @item = Item.find(params[:id])

    respond_to do |format|
         format.html # show.html.erb
         format.xml  { render :xml => @item }
    end
 end

<!-- items/show.html.erb -->
<p>Name: <%= @item.name %></p>
<p>Completed: <%= @item.completed %></p>
<p>Tag: <%= @item.tag.name %></p>

显示文件的第三行或标记行是我的问题所在。错误如下:

找不到类标签的文档 ID 4cd75765f5c4932f19000002。

如果我用下面的行替换有问题的行,则会显示正确的标签 ID(但我显然想要标签名称)

<p>Tag: <%= @item.tag_id %></p>

【问题讨论】:

  • 你从@item.tag得到什么?

标签: ruby-on-rails ruby-on-rails-3 mongodb mongoid


【解决方案1】:

Tag 类有两个名为“name”的属性。 尝试删除key :name

【讨论】:

  • 你是对的,但我认为是错误的原因。删除密钥工作。认为它有效,因为使用了 key 属性,因此名称用于标识地址中的标签。所以它正在使用标签 id 查找标签名称。
  • 在使用 key 之后,我意识到你更好地回答了你自己的问题。您引用的标签已使用 ObjectId 作为键写入数据库。我相信你已经发现,一旦你用 'key :name' 将新记录写入数据库,你就会得到预期的结果。
猜你喜欢
  • 1970-01-01
  • 2017-07-07
  • 1970-01-01
  • 2023-03-06
  • 1970-01-01
  • 2017-12-27
  • 2020-04-02
  • 2012-05-30
  • 2021-02-22
相关资源
最近更新 更多