Rails select_tag收集

时间:2011-06-16 04:38:47

标签: ruby-on-rails

我使用过此代码,通过检查模型中的条件来收集名称

<%=  select_tag "name", options_for_select([["select" , "0" ]] + @names.collect{|p| [p.gatherName(p),p.id]}) %>

如果条件失败,则值返回空白,在这种情况下,otpions按此顺序排列,

  <option value='1'></option> 
  <option value='2'>lamrin</option> 
  <option value='3'></option>

列出框选项1是balnk,选项2有值,选项3是空白。

所以请帮我解决如何避免收集

中的空白选项

感谢

3 个答案:

答案 0 :(得分:3)

除了收集之外,请尝试选择或拒绝,例如

<%=  select_tag "name", options_for_select([["select" , "0" ]] + @names.reject{|p|p.gatherName(p).blank?}.collect{|p| [p.gatherName(p),p.id]}) %>

我还要问为什么gatherName接受一个与调用它的对象相同的参数?

编辑:Doh,我看得太慢了。

答案 1 :(得分:1)

试试这个:

@names.collect{|p| [p.gatherName(p),p.id]}.reject {|i| i.first.blank?}

答案 2 :(得分:0)

我认为p.gatherName(p)可能会返回nil /''。

你可以这样做:

<%= select_tag "name", options_for_select([["select" , "0" ]] + @names.select {|p| p.gatherName(p) && !p.gatherName(p).empty?}.collect{|p| [p.gatherName(p),p.id]}) %>