2016-02-17 81 views
0

我使用simple_form作爲我的Rails項目中的表單生成器,使用RethinkDB作爲數據庫和NoBrainer ORM。我建立了模型以包含它們之間的關係,但是當試圖爲關聯生成選擇下拉列表時,出現錯誤關聯:沒有找到貨幣。我哪裏錯了?Rails simple_form與NoBrainer和RethinkDB的關聯

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 
+0

所以我看到NoBrainer還不支持Reflection,這就是爲什麼f.association方法還沒有工作。然而,有一個拉取請求包含反射支持。 – BrazenBraden

回答

0

你可能沒有做錯任何事情。

請注意,關聯幫手目前僅在 有效記錄中進行過測試。它目前不適用於Mongoid和 ,具體取決於您使用的ORM可能會有所不同。

https://github.com/plataformatec/simple_form

據我所知您的關聯正確申報 - 但你可能要嘗試指定集合要使用的選項。

= f.association :currency, placeholder: 'Please select one', 
       label: 'Currency', 
       label_method: :code, 
       collection: Currency.all 

如果仍然不工作,你可能想使用the lower-level collection input helpers這僅僅是在鐵軌上collection_select方法基礎上增加一些SimpleForm糖。

= f.input :currency_id, 
      label: 'Currency', 
      collection: Currency.all, 
      label_method: :code, 
      value_method: :id 
+0

我猜你正在使用HAML,如果你使用Slim,你可能需要調整一下,因爲多行方法調用的語法是不同的。 – max

+0

完全正確。似乎是simple_form不知道如何處理與RethinkDB的關聯。添加集合沒有區別。 – BrazenBraden

+0

使用第二個選項的工作? – max