与此question相似。我对这个问题感到愚蠢,但我无法解决这个问题。
@default_svn_repository = ["svn_software", "svn_hardware"]
@svn_repos = ["svn_software", "svn_hardware", "svn_documents", "svn_test1_sw", "svn_test2_hw", "svn_test3_documents"
]
<% @svn_repos.each do |repos| %>
<%= check_box("feature", "svn_repos", {:multiple => true, :checked => @default_svn_repository.each {|dsvn| repos == dsvn ? true : false}}, "#{repos}", nil) %>
<%= h repos -%><br />
<% end %>
@default_svn_repository是一个变量,其中包含默认情况下需要检查的数组。在我上面的所有复选框中的示例中,svn_software&amp;需要检查svn_hardware。我在这做错了什么。
答案 0 :(得分:0)
该行
@default_svn_repository.each {|dsvn| repos == dsvn ? true : false}
不返回true或false。它返回整个@default_svn_repository数组,因此所有值都显示为已选中。例如:
[1,2,3].each{|x| x == 3 ? true : false}
在控制台上运行时会给你[1,2,3]。这就是您的代码所发生的事情。应该正确生成真或假。
而只是检查@default_svn_repository数组中是否存在当前的repos值,你应该没问题。
答案 1 :(得分:0)
我会使用check_box_tag
而不是check_box
。这是应该工作的。
<% @svn_repos.each do |repo| %>
<%= check_box_tag(repo, repo, @default_svn_repository.include?(repo)) %>
<%= h repo -%><br />
<% end %>
虽未经过测试。