我有两个模型:
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
第一个 Neighborhood 的方法来获取它的值,它应该这样做,但是由于某种奇怪的原因,它试图id
在它从调用中返回的 String 上调用name
......坦率地说,这没有任何意义。这里发生了什么?我该如何解决?
- 大卫
更新:
得到这个......我尝试使用另一个 FormHelper,而不是与 Rails 捆绑在一起的东西,在本例中是 simple_form。使用相同collection_check_boxes
会产生相同的错误。但是,使用以下似乎工作得很好。
= form.association :neighborhoods, collection: Neighborhood.all, as: :check_boxes
这并不是真正的“修复”,所以我不会将其标记为解决方案。我很难相信 Railscollection_check_boxes
在其最简单的示例中是开箱即用的,所以我猜这与 Mongoid 不能很好地使用这个 FormHelper 有关。我仍然想知道如何使原始功能正常工作。