rails check_box失败的布尔属性

问题描述:

我有一个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

这似乎是一个问题。尝试使用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