Ruby on rails Rails与NoBrainer和db简单地形成关联

Ruby on rails Rails与NoBrainer和db简单地形成关联,ruby-on-rails,associations,simple-form,rethinkdb,nobrainer,Ruby On Rails,Associations,Simple Form,Rethinkdb,Nobrainer,我在一个rails项目中使用simple_form作为表单生成器,RejectionDB作为数据库和NoBrainer ORM。我已将模型设置为包含它们之间的关系,但是在尝试生成关联的选择下拉列表时,我得到错误关联:未找到货币。我哪里做错了 class Country include NoBrainer::Document belongs_to :currency field :name, type: String field :nationality, typ

我在一个rails项目中使用simple_form作为表单生成器,RejectionDB作为数据库和NoBrainer ORM。我已将模型设置为包含它们之间的关系,但是在尝试生成关联的选择下拉列表时,我得到错误关联:未找到货币。我哪里做错了

class Country
    include NoBrainer::Document

    belongs_to :currency
    field :name, type: String
    field :nationality, type: String
end

class Currency
    include NoBrainer::Document

    has_many :countries
    field :name, type: String
    field :code, type: String
    field :symbol, type: String
end

= simple_form_for @country do |f|
    = f.input :name, placeholder: 'e.g. Namibia', label: 'Country'
    = f.input :nationality, placeholder: 'e.g. Namibian', label: 'Nationality'
    = f.association :currency, placeholder: 'Please select one', label: 'Currency', label_method: :code
    = f.button :submit

你可能没有做错什么

请注意,关联帮助器当前仅使用测试 活动记录。它目前不能很好地与Mongoid和 根据您使用的ORM,您的里程可能会有所不同

AFAIK您的关联声明正确-但是您可能希望尝试指定用于选项的集合

= f.association :currency, placeholder: 'Please select one', 
                label: 'Currency', 
                label_method: :code, 
                collection: Currency.all
如果它仍然不起作用,您可能需要使用它,这只是Rails方法之上的一些SimpleForm sugar


我猜您正在使用HAML,如果您正在使用Slim,您可能需要进行一些调整,因为多行方法调用的语法是不同的。非常正确。似乎很简单,不知道如何处理与数据库的关联。添加集合没有什么区别。经过大量挖掘后,我发现NoBrainer gem此时不支持反射,尽管有一个包含反射的请求(该请求尚未生效),因此它应该很快就可以使用。为了回答你的问题,是的,我可以选择一个集合,为它提供所需的集合。希望上面的内容能得到整理,因为这会让生活变得更简单。所以我发现NoBrainer还不支持反射,这就是为什么f.association方法还不起作用。然而,有一个包含反射支持的请求。
= f.input :currency_id, 
          label: 'Currency',
          collection: Currency.all,
          label_method: :code, 
          value_method: :id