McS*_*ter 3 checkbox ruby-on-rails
我正在使用Rails(3.2.5与ruby 1.9.3)和mongodb与mongoid.我想给用户提供工作日检查的选项.因此我的控制器中有一个带类型哈希的字段:
field :wochentage, :type => Hash, default: { :mo => 0,
:di => 0,
:mi => 0,
:dn => 0,
:fr => 0,
:sa => 0,
:so => 0
}
Run Code Online (Sandbox Code Playgroud)
问题是我无法在Web表单中使用它:
<% for d,v in @timetable.wochentage %>
<td><%= f.check_box :wochentage[d]%></td>
<% end %>
Run Code Online (Sandbox Code Playgroud)
我得到的错误是:
无法将符号转换为整数
谁能指点我正确的方向?谢谢你,斯文
好的,更进一步:使用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 %>
Run Code Online (Sandbox Code Playgroud)
使用此代码,我可以设置工作日.但它不会从数据库中读取它,如果我想编辑它虽然它被正确存储: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 %>
Run Code Online (Sandbox Code Playgroud)
有趣的是:Normal check_box保存为true,未选中为false.当您有一个字段的多个复选框作为哈希时,复选框保存1表示已选中,0表示未选中.
| 归档时间: |
|
| 查看次数: |
2553 次 |
| 最近记录: |