2017-10-04 34 views
0

我有一個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。

有沒有辦法做到這一點?

回答

2

設置一個範圍,你的文檔類:

##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'} %> 
+0

謝謝。我需要調整它,因爲它是一個空字符串。這就是我最終完成的作品。範圍:named_documents, - > {where(「name <>''」).order(:name)} – spacerobot

+0

您是否認爲應該通過在模型中添加NOT NULL常量和驗證來解決這個問題? – max

+0

不,我正在使用acts_as_tree和jstree來構建文件管理器的樹。有時如果該字段不是類別標題,則該字段將是空的。 – spacerobot

0

你可以做

<%= 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

我更新了它來實際迭代集合。 –

相關問題