我有两种模式:
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玩得很好有关。我仍然想知道如何使原始功能正常工作。