我在使用mongoid的rails项目时遇到了一些麻烦。
问题在于创建/编辑新帖子。
我想为帖子选择一个主题/类别(娱乐/新闻/ MISC)。
首先,我使用了一个在railscast 238(接近结尾)中尝试了该方法 关键值
http://railscasts.com/episodes/238-mongoid
但我一直收到BSON ObjectID错误。在寻找一个 解决方案我发现讨论它的主题,但提到的修复是 已经在我正在使用的mongoid版本中。
所以我把事情搞定了。我不知道这是好的做法还是 不,但我没有想法。我使用的不是railscast方法 下面的代码。但是,我收到了这个错误......
“未定义的方法`元数据” “4d4165b3fcf1ee14e0000049”:字符串“
post model
class Post
include Mongoid::Document
field :link
field :title
field :synopsis
field :added_on, :type => Date
validates_presence_of :link
embeds_many :replies
embeds_one :topic
end
topic model
class Topic
include Mongoid::Document
field :category, :type => String
embedded_in :post, :inverse_of => :topics
end
_form.html.erb
<div class="field">
<%= f.label :topic_id %>
<%= f.collection_select :topic, Topic.all, :id, :category, :prompt
=> "Select a Topic" %>
</div>
我最近尝试过从embedded_in / embeds_one更改为references_one / referenced_in。我也被告知“Topic.all”是错误的,但我不知道该改变什么来让它工作。
Gemfile信息......
gem "mongoid", "2.0.0.rc.6"
gem "bson_ext", "~> 1.2"
什么都伸出来了?
编辑:
更新到2.0.0.rc.7仍然无法获得它。
尝试使用railscast视频中的关键方法,只是为了好玩。相同 “PostsController#update中的BSON :: InvalidObjectId”错误。
答案 0 :(得分:1)
按照下面链接中的示例显示如何将embeds_one与嵌套表单一起使用 mongoid nested form with embeds_one
答案 1 :(得分:0)
在您的课程主题中,它应该是embedded_in:post,:inverse_of =&gt; :话题 你有:inverse_of =&gt; :主题,但您使用的是embeds_one:主题不多