gpt4 book ai didi

ruby-on-rails - Rails 字段(哈希类型)和多个复选框

转载 作者:行者123 更新时间:2023-12-03 15:30:47 25 4
gpt4 key购买 nike

我正在使用 Rails(3.2.5 和 ruby​​ 1.9.3)和 mongodb 和 mongoid。我想给用户检查工作日的选项。因此,我的 Controller 中有一个类型为 hash 的字段:

field :wochentage, :type => Hash, default: {  :mo => 0,
:di => 0,
:mi => 0,
:dn => 0,
:fr => 0,
:sa => 0,
:so => 0
}

问题是我无法让它在网络表单中工作:

<% for d,v in @timetable.wochentage  %>
<td><%= f.check_box :wochentage[d]%></td>
<% end %>

我得到的错误是:

can't convert Symbol into Integer

谁能指出我正确的方向?提前致谢,斯文

好的,更进一步:使用 fields_for 表单助手,我离得更近了:

<%= f.fields_for :wochentage do |w| %>
<td><%= w.check_box :mo %></td>
<td><%= w.check_box :di %></td>
<td><%= w.check_box(:mi, checked_value: "1", unchecked_value: "0") %></td>
<td><%= w.check_box :dn %></td>
<td><%= w.check_box :fr %></td>
<td><%= w.check_box :sa %></td>
<td><%= w.check_box :so %></td>
<% end %>

使用此代码,我可以设置工作日。但它不会从数据库中读取它,如果我想编辑它,尽管它存储正确:Wochentage: {"mo"=>"0", "di"=>"0", "mi"=>"1", "dn"=>"0", "fr"=>"0", "sa"=>"0", "so"=>"0"}

在编辑表单中,所有复选框都未选中。那么如何让复选框以正确的状态显示呢?

谢谢,S

最佳答案

好的,我明白了:

<%= f.fields_for :wochentage do |w| %>
<% @timetable.wochentage.each do |t,v| %>
<td><%= w.check_box t, checked: (v == "1" ? "checked" : "") %></td>
<% end %>
<% end %>

有趣的是:正常的check_box保存选中为真,未选中为假。当您有多个复选框作为哈希字段时,复选框保存 1 为选中,0 为未选中。

关于ruby-on-rails - Rails 字段(哈希类型)和多个复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12538504/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com