【问题标题】:How can I fix {:multiple => true} causing undefined method stringify_keys for nil:NilClass?如何修复 {:multiple => true} 导致 nil:NilClass 的未定义方法 stringify_keys?
【发布时间】: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


【解决方案1】:

我修复了错误,我最终做了以下事情:

<%= check_box_tag "tag_ids[]", tag.id, false, :id => "tag_ids_#{tag.id}" %>

而不是执行多个 => true 而是这样做。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-05
    • 1970-01-01
    • 2013-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多