【发布时间】:2019-05-06 01:18:45
【问题描述】:
我正在尝试创建将返回 tag_ids 数组的复选框,以便我可以通过它们进行搜索。为了做到这一点,我认为我需要在复选框中包含 {:multiple => true} 但我不确定,因为我对 Ruby on Rails 还很陌生。我不确定为什么会导致此错误发生,但是当我删除这段代码时,错误就会消失。我需要包括什么才能完成这项工作,还是我需要考虑不同的解决方案?如果我包含的内容还不够,请告诉我是否需要包含更多代码。
(注意:这段代码还不能正常工作,只是试图修复这个错误)
applist.erb:
<h2 class="ml-5">Categories</h2>
<% tags = Tag.all %>
<%= form_tag("../welcome/tagsearch", :method => "get") do%>
<% tags.each{|tag| %>
<div class="form-check ml-2">
<%= check_box_tag :tag_ids, {:multiple => true}, tag.id, nil%>
<label class="form-check-label"> <%= tag.name %></label>
</div>
<% } %>
<div class="input-group">
<div class="input-group-btn ml-1">
<div class="input-group-btn">
<%= button_tag(:class => 'btn btn-dark',:name => nil) do%>
Submit
<% end %>
</div>
</div>
</div>
<% end %>
</div>
<div class="col-8">
错误: nil:NilClass 的未定义方法“stringify_keys”
【问题讨论】:
-
附带说明,我建议为您的多行ERB推荐
do end语法,而不是` ` 你会做 ` 你的多行然后 -
这不起作用的原因是因为你的参数与方法签名不匹配
check_box_tag(name, value = "1", checked = false, options = {})我想你可能不小心看到了check_box这是一个表单助手check_box(object_name, method, options = {}, checked_value = "1", unchecked_value = "0")在这种情况下如果在表单对象上调用,例如f.checkbox那么你的签名是正确的
标签: html ruby-on-rails ruby