2012-10-13 15 views
6

क्या कहने का कोई आसान तरीका है: अन्यथा, अगर कुछ भी नहीं था, तो 'कोई वस्तु नहीं' दिखाएं। लगता है जैसे वहाँ के बजाय ऐसा करने @ user.find_object ("param")प्रत्येक लूप रेल पर रूबी में, अगर कुछ भी नहीं किया गया तो कुछ करने का कोई अच्छा तरीका है?

+0

सबसे अच्छा तरीका मैंने पाया (और प्यार करता था) @ फर्नांडो-एलन से जवाब है: http://stackoverflow.com/ए/2 9 77478/757850 –

उत्तर

6

आप की तरह कुछ कर सकते हैं की अवधि की गणना के लिए एक अच्छा वाक्य-तरीका होना चाहिए:

if @collection.blank? 
    # @collection was empty 
else 
    @collection.each do |object| 
    # Your iteration logic 
    end 
end 
+3

यह सामान्य है हालांकि इसे करने का वर्बोज़ तरीका है। ध्यान दें कि 'रिक्त?' कुछ समस्याएं छाया कर सकता है (मान 'शून्य 'नहीं होना चाहिए),' खाली? 'अधिक विशिष्ट है। – tokland

0
if @array.present? 
    @array.each do |content| 
    #logic 
    end 
else 
    #your message here 
end 
5

रेल देखने

# index.html.erb 
<h1>Products</h1> 
<%= render(@products) || content_tag(:p, 'There are no products available.') %> 

# Equivalent to `render :partial => "product", @collection => @products 

render(@products)nil वापस आ जाएगी जब @products खाली है।

रूबी

puts "no objects" if @collection.blank? 

@collection.each do |item| 
    # do something 
end 

# You *could* wrap this up in a method if you *really* wanted to: 

def each_else(list, message) 
    puts message if list.empty? 

    list.each { |i| yield i } 
end 

a = [1, 2, 3] 

each_else(a, "no objects") do |item| 
    puts item 
end 

1 
2 
3 
=> [1, 2, 3] 

each_else([], "no objects") do |item| 
    puts item 
end 

no objects 
=> [] 
0

मैं निम्न कार्य करें:

<% unless @collection.empty? %> 
<% @collection.each do |object| %> 
    # Your iteration logic 
    <% end %> 
<% end %> 
संबंधित मुद्दे

 संबंधित मुद्दे