使用 check_box 更改模型(rails)上的布尔属性
我正在制作一个杂货清单应用程序,我想让用户检查他们放入购物车的物品。我想通过将属性“found”从 false 切换为 true (在我的“item”模型中)来做到这一点。
这是我的代码:
<% for item in @items %>
<tr>
<td><%= check_box, item, :found, {}, true, false %></td>
<td><%= item.quantity %></td>
<td><%= item.name %></td>
<td><%= item.category %></td>
</tr>
<br />
<% end %>
然后我在页面底部有一个“更新”链接。列表有很多项目,当我要求更新列表时,我假设我也在更新该列表中项目的属性。
<%= link_to "Update", @list, :method => :put %> |
这是我的列表控制器中的更新操作:
def update
@list = List.find(params[:id])
if @list.update_attributes(params[:list])
flash[:notice] = "Successfully updated list"
redirect_to @list
else
render :action => 'edit'
end
end
我相信我正确遵循了 check_box 的文档。然而,不知怎的,在我更新后,“找到的”布尔值仍然是假的。有谁知道如何正确实施这个?我暂时不想使用 AJAX。谢谢!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我讨厌链接到我自己的博客,但在这种情况下,您可能需要 检查一下,因为它是直接相关的(在我看来,比完整的请求周期解决方案漂亮得多)。
I hate linking to my own blog, but in this case you might want to check it out as it's directly related (and IMO, much prettier than a full request cycle solution).
您的模型是否有可能在某些属性上具有 attr_accessible 或在 :found 上具有 attr_protected ?
尝试将 update_attributes 更改为 update_attributes!看看您是否获得更多信息。
其他一些建议可能是将参数转储到日志中,尝试直接分配给模型(例如 item.found = params[:found] == '1'),确保复选框 1 或 0 正确解释为布尔值 true、false。
Is there a chance that your model might have either attr_accessible on some attributes or attr_protected on :found?
Try to change the update_attributes to update_attributes! and see if you get any more information.
Some other suggestions could be to dump the params to the log, try to do direct assignment to the model (like item.found = params[:found] == '1'), make sure that you checkbox 1 or 0 is being correctly interpreted as boolean true, false.