Rails FormHelper collection_check_boxes无法使用Mongoid集合

时间:2013-08-11 10:27:58

标签: ruby-on-rails mongoid

我有两种模式:

class LocationPreferences
  include Mongoid::Document

  has_and_belongs_to_many :neighborhoods,
                          class_name: "Neighborhood",
                          inverse_of: nil
end

class Neighborhood
  include Mongoid::Document

  field :name,         type: String, default: nil
end

我正在使用Rails FormHelper构建表单,并希望为这组首选项可能包含的每个邻域创建一个复选框列表。所以,我的表单构建器看起来像:

= form_for preferences do |form|
  = form.collection_check_boxes :neighborhoods, Neighborhood.all, :name, :name

然而,这会引发错误:

undefined method `id' for "Downtown":String

它似乎调用第一个邻居的name方法来获取它的值,但是由于某些奇怪的原因,尝试在它从调用中返回的String上调用id name ...坦率地说,没有任何意义。这里发生了什么?我该如何解决?

  • 大卫

更新

获取此...我尝试使用另一个FormHelper,而不是Rails捆绑的内容,在本例中为simple_form。使用相同的collection_check_boxes会产生相同的错误。但是,使用以下内容似乎工作正常。

= form.association :neighborhoods, collection: Neighborhood.all, as: :check_boxes

这不是一个“修复”,所以我不打算将其标记为解决方案。我发现很难相信Rails'collection_check_boxes在最简单的例子中是开箱即用的,所以我猜这与Mongoid没有与这个FormHelper玩得很好有关。我仍然想知道如何使原始功能正常工作。

0 个答案:

没有答案