2011-06-15 41 views
0

我有一個postgres數據庫與布爾字段:on_farm_tour。但我的觀點得到這樣的:rails check_box失敗的布爾屬性

undefined method `to_i' for #<Class:0x10ddec5c0> 
Extracted source (around line #10): 

7: 
8: %p 
9: =f.label :on_farm_tour, "This farm is in the Farm Tour?" 
10: =f.check_box :on_farm_tour 
11: 
12: %p 
13: =f.label :last_mile_directions, 'Enter driving directions from the last point displayed by Google Maps for this farm to the actual location of the farm' 

很明顯,我知道true.to_i是不確定的,但什麼是處理這個正確的方法是什麼?

+1

我們可以看一下表格的開頭,即6個第一行嗎? – christianblais 2011-06-15 20:17:07

回答

1

這似乎是一個問題。嘗試使用check_box_tag代替。看看什麼apidock.com說一下:

疑難雜症

HTML規範說選中 複選框都沒有成功,而 因此Web瀏覽器不發送。 不幸的是,這引入了一個 問題:如果一個Invoice模型有一個付費 標誌,並且編輯一個 付款發票的形式,用戶取消選中它的 複選框,不發送付費參數。 因此,像

@invoice.update_attributes(params[:invoice]) 

不會更新標誌的任何大規模分配成語。

爲防止這種情況,助手在 複選框之前生成 輔助隱藏字段。隱藏字段有 相同的名稱和其屬性模仿 一個未選中的複選框。

這種方式,客戶端或者只發送 隱藏字段(表示 複選框未被選中),或兩者 字段。由於HTML規範 說鍵/值對有它們出現在 形式相同的順序發送 和參數提取得到 在查詢字符串中的任何重複 關鍵,對於一般形式的作品 最後一次出現。

不幸的是,當複選框進入一個 類似數組的參數範圍內的解決方法不會 工作,在

<%= fields_for "project[invoice_attributes][]", 

發票:指數=>無事|形式| %> <%= form.check_box:支付%> ... <%端%>

因爲參數名的重複是 正是滑軌尋求 區分數組的元素。 對於每個帶有複選框 的項目,您將獲得一個額外的鬼物品,其中只有 屬性,分配爲「0」。

在這種情況下,最好 要麼使用check_box_tag,要麼使用 散列而不是數組。

+0

我不認爲這是問題。該複選框從不呈現,因爲代碼扼流圈。這似乎是一個rails版本的問題。剛剛從2.3.4升級了一箇舊項目到2.3.11,這似乎解決了這個問題。 – pixelearth 2011-06-15 21:26:49