Рельсы select_tag собирать - PullRequest
0 голосов
/ 16 июня 2011

Я использовал этот код, чтобы собрать имена, проверив условие в модели

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

если условие не выполнено, значение возвращается пустым, в этом случае опионы упорядочены следующим образом:

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

, в то время как в поле списка для опции 1 задано значение balnk, для опции 2 - значение, а для опции 3 - пустое значение.

, поэтому, пожалуйста, помогите мне, как избежать пустых опций в наборе

спасибо

Ответы [ 3 ]

3 голосов
/ 16 июня 2011

Попробуйте выбрать или отклонить дополнительно для сбора, например,

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

Я также должен спросить, почему collectName принимает параметр, который совпадает с объектом, для которого он вызывается?

Редактировать: Доу, слишком медленно, я вижу.

1 голос
/ 16 июня 2011

Попробуйте это:

@names.collect{|p| [p.gatherName(p),p.id]}.reject {|i| i.first.blank?}
0 голосов
/ 16 июня 2011

Я предполагаю, что p.gatherName(p), вероятно, возвращает ноль / ''.

Вы можете сделать что-то вроде этого:

<%= 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]}) %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...