2011-06-16 121 views
0

我已经使用这个代码,通过模型检测的条件,收集名Rails的select_tag收集

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

尽量选择或拒绝除了收集,例如

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

我也得问为什么gatherName需要一个参数,它与被调用的对象相同?

编辑:我看得太慢。

+0

啊我忘了可靠.blank? :),清洁解决方案。 – 2011-06-16 04:52:28

+0

非常感谢......实际情况与此类似,具有类似的功能.. – lamrin 2011-06-16 04:57:04

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]}) %> 
1

试试这个:

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