尝试实现多个(父/子)复选框设置,其中“全部检查”检查所有框,并取消选中其中一个子框取消选中“全部检查”。已经在网上找到了几个解决方案但没有使用Ruby on Rails。一个看起来很有前途的解决方案是使用简单的HTML和jQuery脚本。基本HTML看起来像这样 - 在jQuery代码中引用了类以识别复选框:
<html>
<fieldset>
<input type="checkbox" class="parentCheckBox" /> Parent 1<br />
<input type="checkbox" class="childCheckBox" /> Child 1-1<br />
<input type="checkbox" class="childCheckBox" /> Child 1-2<br />
<input type="checkbox" class="childCheckBox" /> Child 1-3<br />
<input type="checkbox" class="childCheckBox" /> Child 1-4<br />
<input type="checkbox" class="childCheckBox" /> Child 1-5<br />
</fieldset>
</html>
我在Rails中生成了一个简单的脚手架来测试想法,使用父母和3个孩子。通用脚手架代码如下所示:
<fieldset>
<div class="field">
<%= f.label :checkall %><br>
<%= f.check_box :checkall %>
</div>
<div class="field">
<%= f.label :date_one %><br>
<%= f.check_box :date_one %>
</div>
<div class="field">
<%= f.label :date_two %><br>
<%= f.check_box :date_two %>
</div>
<div class="field">
<%= f.label :date_three %><br>
<%= f.check_box :date_three %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
</fieldset>
Rails API将其显示为check_box语法:
check_box(method, options = {}, checked_value = "1", unchecked_value = "0")
......并举了一个例子:
check_box("eula", "accepted", { class: 'eula_check' }, "yes", "no")
# => <input name="eula[accepted]" type="hidden" value="no" />
# <input type="checkbox" class="eula_check" id="eula_accepted" name="eula[accepted]" value="yes" />
...但我在这里抓住稻草,因为我不确定定义,语法等。试图将上面那个简单的HTML翻译成rubyspeak,我想出了这个:
<fieldset>
<div class="parentCheckbox">
<%= f.label :checkall %><br>
<%= f.check_box :checkall, {class: parentCheckBox} %>
</div>
<div class="childCheckBox">
<%= f.label :date_one %><br>
<%= f.check_box :date_one, {class: childCheckBox} %>
</div>
<div class="childCheckBox">
<%= f.label :date_two %><br>
<%= f.check_box :date_two, {class: childCheckBox} %>
</div>
<div class="childCheckBox">
<%= f.label :date_three %><br>
<%= f.check_box :date_three, {class: childCheckBox} %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
</fieldset>
...并收到此错误:
undefined local variable or method `parentCheckBox' for #<#<Class:0xbdcb5e4>:0xc07ab8c>
Extracted source (around line #18):
15
16 <div class="parentCheckbox">
17 <%= f.label :checkall %><br>
18 <%= f.check_box :checkall, {class: parentCheckBox} %>
19 </div>
我确信我已经离开这里了,但是API在将非常简单的HTML转换为嵌入式ruby方面帮助很小。我知道jQuery脚本可以与HTML一起使用,但是我需要提交表单的结果来提供数据库,而不仅仅是在显示器中看起来很漂亮,所以我试图不要过多地使用rails生成的代码。
忘记。
答案 0 :(得分:0)
&lt;%= f.check_box:checkall,{class:'parentCheckBox'}%&gt; - 将''添加到字符串('parentCheckBox')