2010-10-15 5 views
0

У меня есть следующий код:проверка, если тег существует, прежде чем добавить его в массив

unless params[:search_tags].nil? 
    logger.debug "Going through tags now #{params[:search_tags]}" 
    params[:search_tags].split(",").each{ |tag| 
    tag.strip! 
    tag = '%' + tag + '%' 
    tags = Tag.find(:all, :conditions => ["name LIKE ?", tag]) 
    if tags.nil? || tags.empty? # I'm searching for something that does not actually exist! 
     @listings = [] 
    else 
     tags.each {|tag| 
     logger.debug "Checking #{tag}"; @listings = @listings & tag.listings 
     } 
    end 
    } 
    logger.debug "I have #{@listings.size} listings left after hashtag stripping" 
end 

Проблема, если я ввожу 2 метки и 1 не существует, она не возвращает никаких результатов. Я хотел бы добавить проверку, если тег существует до его добавления.

+0

Как tag.listings выглядеть и как вы ожидаете @listings быть? –

ответ

0

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

unless params[:search_tags].nil? 
     logger.debug "Going through tags now #{params[:search_tags]}" 
     params[:search_tags].split(",").each do |tag| 
     tag.strip! 
     tag = '%' + tag + '%' 
     tags = Tag.find(:all, :conditions => ["name LIKE ?", tag]) 

     @listings = [] 

     unless tags.nil || tags.empty? 
      tags.each do |tag| 
      logger.debug "Checking #{tag}"; 
      @listings << tag.listings 
      end 
     end 
     @listings = @listings.uniq 
     end 
     logger.debug "I have #{@listings.size} listings left after hashtag stripping" 
    end 
Смежные вопросы