Проблема с collection_select / mongoid / mongodb - PullRequest
1 голос
/ 28 января 2011

У меня возникли проблемы с проектом рельсов с использованием Mongoid.

Проблема при создании / редактировании нового сообщения.

Я хотел бы выбрать тему / категорию для сообщения (развлечения / новости / разное).

Сначала я попробовал метод в Railscast 238 (ближе к концу), используя значение ключа

http://railscasts.com/episodes/238-mongoid

Но я продолжал получать ошибку BSID ObjectID. Во время поиска Решение я нашел темы для обсуждения, но упомянутое исправление уже в версии mongoid, которую я использую.

Так что я все изменил. Я понятия не имею, если это хорошая практика или нет, но у меня кончились идеи. Вместо метода Railscast я использовал код ниже. Однако я получаю эту ошибку ...

"неопределенный метод` метаданные 'для "4d4165b3fcf1ee14e0000049": String "

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 на Reference_one / referenced_in. Мне также говорят, что "Topic.all" не так, но я не знаю, что изменить, чтобы заставить его работать.

Информация о Gemfile ...

gem "mongoid", "2.0.0.rc.6"
gem "bson_ext", "~> 1.2"

Что-нибудь торчит?

Edit:

Обновление до 2.0.0.rc.7 до сих пор не получается.

Попробовал ключевой метод в видео Railscast просто для удовольствия. Так же Ошибка «BSON :: InvalidObjectId в PostsController # update».

Ответы [ 2 ]

1 голос
/ 11 марта 2011

следуйте примеру в ссылке ниже, которая показывает, как использовать embeds_one с вложенной формой

0 голосов
/ 08 марта 2011

В теме вашего класса это должен быть встроенный_in: post,: inverse_of =>: тема У вас есть: inverse_of =>: темы, но вы используете embeds_one: тема не так много

...