collection_select / mongoid / mongodb的问题

时间:2011-01-28 01:06:25

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

我在使用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”错误。

2 个答案:

答案 0 :(得分:1)

按照下面链接中的示例显示如何将embeds_one与嵌套表单一起使用 mongoid nested form with embeds_one

答案 1 :(得分:0)

在您的课程主题中,它应该是embedded_in:post,:inverse_of =&gt; :话题 你有:inverse_of =&gt; :主题,但您使用的是embeds_one:主题不多