Rails 5.1如何不在collection_select中列出空值?
问题描述:
我有一个collection_select场这里列出:Rails 5.1如何不在collection_select中列出空值?
<%= form.collection_select :parent_id, Document.order(:name), :id, :name,
{:include_blank => ''}, {:class => 'form-control'} %>
名称字段中有某些情况下空。我只想列出collection_select中的名称,如果它不为null。
有没有办法做到这一点?
答
设置一个范围,你的文档类:
##document.rb
scope :named_documents, -> { where.not(name: nil).order(:name) }
然后你可以使用它像这样:
<%= form.collection_select :parent_id, Document.named_documents, :id, :name, {:include_blank => ''}, {:class => 'form-control'} %>
答
你可以做
<%= form.collection_select :parent_id, Document.named_documents.reject{|d| d.name.nil?}.order(:name), :id, :name,
{:include_blank => ''}, {:class => 'form-control'} %>
我更新它。
+0
感谢。我收到了一个未定义的方法“拒绝”错误。 – spacerobot
+0
我更新了它来实际迭代集合。 –
谢谢。我需要调整它,因为它是一个空字符串。这就是我最终完成的作品。范围:named_documents, - > {where(“name ''”).order(:name)} – spacerobot
您是否认为应该通过在模型中添加NOT NULL常量和验证来解决这个问题? – max
不,我正在使用acts_as_tree和jstree来构建文件管理器的树。有时如果该字段不是类别标题,则该字段将是空的。 – spacerobot