2010-10-31 11 views
23

के अंत में पूरी सरणी प्रिंट कर रहा है मुझे लगता है कि मैं जो करने की कोशिश कर रहा हूं वह बहुत आसान है, और मुझे सच में यकीन नहीं है कि यह क्यों काम नहीं कर रहा है। मैं रेल का उपयोग कर रहा हूं 3.रूबी/रेल - .च इटरेटर लूप

अनिवार्य रूप से, मैं बस मौजूदा मॉडल में कॉलम से अलग-अलग मानों का चयन करने की कोशिश कर रहा हूं, और उन्हें सभी प्रिंट कर रहा हूं। अधिकांश भाग के लिए, यह काम करता है लेकिन मेरे दृश्य में .eच लूप भी लूप के अंत में पूरे सरणी को प्रिंट करना समाप्त कर देता है। (

मैं एक मॉडल आकर्षण कहा जाता है, और प्रत्येक आकर्षण) एक श्रेणी (अभी श्रेणी सादगी के लिए डीबी में hardcoded किया जाता है।

यह आकर्षण मॉडल और एक वर्ग विधि "all_categories" परिभाषित किया गया है .. ।

class Attraction < ActiveRecord::Base 

    def self.all_categories 
    Attraction.select("DISTINCT category") 
    end 

end 

यह आकर्षण नियंत्रक

class AttractionsController < ApplicationController 
    def index 
    @categories = Attraction.all_categories 
    @attractions = Attraction.find(:all) 
    end 

    def show 
    @attraction = Attraction.find(params[:id]) 
    end 
end 

है यह मेरे विचार में कोड है कि मुसीबत खड़ी कर रहा है है - कोई रॉकेट विज्ञान, जू एक साधारण इटरेटर, ...

<%= @categories.each do |c| %> 
    <%= c.category %><br/> 
    <% end %> 

बहुत आसान, सही? यह सब चल रहा है ठीक है, लेकिन यह मैं क्या देखते हैं जब कि कोड खंड चलाया जाता है है:

Architecture 
Art 
Fashion 
Music 
[#<Attraction category: "Architecture">, #<Attraction category: "Art">, #<Attraction category: "Fashion">, #<Attraction category: "Music">] 

अंत में सरणी क्यों छपा है? सभी मैं चाहता हूँ श्रेणियों की एक सूची है:

Architecture 
Art 
Fashion 
Music 

जाहिर है, मैं रूबी/रेल के लिए नया हूँ, और मैं इस के लिए एक समाधान के लिए सब कुछ खत्म हो खोज करने के लिए कोशिश की है। क्या कुछ स्पष्ट है कि मुझे याद आ रही है?

किसी भी मदद की सराहना करें।

उत्तर

64
# Change this line with an =: 
<%= @categories.each do |c| %> 
# ...to this: 
<% @categories.each do |c| %> 

आप केवल #each विधि के ब्लॉक पर दुष्प्रभाव, आप दिए गए मान के प्रक्षेप नहीं करना चाहती चाहते हैं।

+0

यह वही लाइन है? – shingara

+4

'<% =' बनाम '<%' ... – DigitalRoss

+0

आपको बहुत बहुत धन्यवाद! – tarunsachdeva

1

यह है क्योंकि यह क्या हो सकता है जब आप

def self.all_categories 
    Attraction.select("DISTINCT category") 
end 

कर यह अपने क्षेत्र से परिभाषित विशेषता के साथ एक आकर्षण वस्तु बनाने है है। आप

def self.all_categories 
    Attraction.select("DISTINCT category").map(&:category) 
end 
+0

यह भी काम करता है, हालांकि मुझे अंत में सरणी प्रिंटिंग से बचने के लिए डिजिटलरॉस द्वारा सुझाए गए समाधान को लागू करना होगा। धन्यवाद! – tarunsachdeva

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