我有一個名爲Materials的表,我創建了一個搜索表單。在表單中,我希望有包含搜索選項名稱的選擇框。舉例來說,如果您想按主題搜索,我希望每個主題都有一個下拉菜單。我對這個代碼的工作原理:從Rails數組中過濾nil和空值3.2
@subject = Material.unscoped.select(:subject).where("materials.subject IS NOT NULL
and materials.subject != '' ").uniq
這給了我什麼,我想用下面的表單輔助:
<%= select_tag "subject", options_from_collection_for_select(@subject, "subject",
"subject"), :include_blank => true, :class => "input_field" %>
但是 - 我現在只想選擇從共享材料的主題。所以,我選擇的共享使用的材料:
@shared = Material.where(:status => 'shared')
然後跑到這段代碼:
@subject = @shared.unscoped.select(:subject).where("@shared.subject IS NOT NULL
and @shared.subject != '' ").uniq
不工作。我認爲這是因爲sql代碼無法理解@shared對象。但如何做到這一點?
注:
我試着使用:
@subject = @shared.uniq.pluck(:subject).reject! { |s| s.empty? }
這給正確的字段的數組,但隨後不與options_from_collection_for_select工作。
謝謝。這也起作用,範圍界定對其他事情也很有用。 – Finnjon