使用 check_box 更改模型(rails)上的布尔属性

发布于 2024-12-04 10:10:39 字数 996 浏览 1 评论 0 原文

我正在制作一个杂货清单应用程序,我想让用户检查他们放入购物车的物品。我想通过将属性“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。谢谢!

I'm making a grocery list application in which I'd like to let users check off the items that they've placed in the cart. I'd like to do this by toggling the attribute "found" from false to true (within my "item" model).

Here's the code I have for this:

<% 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 %>

I then have an "update" link at the bottom of the page. A list has many items, when I ask to update a list, I'm assuming that I'm also updating the attributes of the items within that list.

<%= link_to "Update", @list, :method => :put %> |

Here's the update action in my list controller:

  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

I believe I'm following the documentation for check_box correctly. Nevertheless, somehow the "found" boolean stays false after I update. Does anyone know how to implement this correctly? I'd like to not use AJAX for the time being. Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

心如荒岛 2024-12-11 10:10:39

我讨厌链接到我自己的博客,但在这种情况下,您可能需要 检查一下,因为它是直接相关的(在我看来,比完整的请求周期解决方案漂亮得多)。

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).

好久不见√ 2024-12-11 10:10:39

您的模型是否有可能在某些属性上具有 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文