2012-03-24 33 views
0

環境:Rails的3.2.1
SimpleForm 2.0.1
我曾經遇到過的用戶在這裏和其他地方通過谷歌詢問類似的問題,但我還沒有找到答案!simple_form集合複選框添加異常值數據庫

我想提供一系列複選框來定義聯繫人的首選項。
我做了一個小測試應用程序,使用我在simple_form演示應用程序中注意到的東西。

我跟模式有我包括這個命名的字符串屬性 「post_pref」

在ContactsHelper:

def contact_preference_options 
    ['High Resolution','Web Resolution','Browser','Hard Copy Proof'] 
end 

在我_form部分我有這樣的:

<%= f.input :post_pref, :collection => contact_preference_options, :as => :check_boxes %> 

我開始服務器並創建一個新的聯繫人。

在New和Edit視圖中,顯示覆選框。我選中「瀏覽器」作爲我的新聯繫人的偏好並提交。
檢查一個或多個偏好的結果是一團糟。

第一張:
當我去編輯一個記錄時,當前首選項不被檢查。

二:
在顯示和Index視圖我看到這一點:

--- - Browser - '' 

在控制檯中,我看到:

---\n- Browser\n- ''\n 

看到的是這樣的:

Browser 

我的問題tions是:
破折號從哪裏來?
新線從哪裏來?
爲什麼會有空字符串?
爲什麼我在編輯聯繫人時未選中先前選中的複選框?

注意:當我用單選按鈕或選擇選項時,它的工作正常。但我希望聯繫人可能有幾個偏好,所以我需要複選框。

有趣的是,我用formtastic而不是simple_form嘗試了同樣的事情,結果幾乎相同。複選框的訣竅是什麼?

非常感謝任何幫助。

回答

0

對我來說,它看起來就像是保存陣列,所以我做了參數的一些預處理保存前:

lifestyle = params[:lifestyle] 
lifestyle[:languages] = lifestyle[:languages].reject(&:blank?).join(",") 
if @lifestyle.update_attributes(lifestyle) 
... 

在這個例子中,我的複選框是生活模式下的語言。希望這可以幫助。