2012-01-22 2 views
1

J'ai un objet nommé Puzzle et j'appelle .map dessus afin d'isoler les valeurs 'title'. J'utilise ensuite 'puts' pour les imprimer proprement mais rien n'est retourné.Joli impression d'un tableau avec Ruby on Rails

def puzzle_find 
    title_array = self.puzzles.map { |s| s.title } 
    puts title_array 
end 
#=> " " 

Si je ne me met « » alors je reçois le tableau comme ceci:

def puzzle_find 
    title_array = self.puzzles.map { |s| s.title } 
end 

#=> ["title 1", "title 2", "title 3"] 

Je suis en train de faire le look de sortie comme celui-ci, à mon avis:

title 1 
title 2 
title 3 

grâce

+1

La méthode puzzle_find ne devrait pas être responsable de l'impression de la matrice. Renvoyez juste le tableau, et manipulez comment vous voulez l'afficher dans la vue. – Robin

Répondre

3

La collection de titres doit être préparé dans le contrôleur (ou exposé par le contrôleur et récupéré dans le modèle, ou etc., tant que il y a une collection de titres à la fin de tout):

def controller_method 
    @puzzles = ... whatever ... 
    @titles = @puzzles.collect(&:title) 
end 

Vue:

<% @titles.each do |t| %> 
    <%= t %><br/> 
<% end %> 

(ou l'envelopper dans une partie, ou utiliser une aide. Ci-dessus suppose que le code HTML a été nettoyé.)

1
title_array.each do |title| 
    puts title 
end 
0

Salut Quand vous dites "moi", je suppose c'est le fichier html.erb.

Utilisez méthode de jointure pour insérer <br/> dans votre tableau:

def puzzle_find 
    title_array = self.puzzles.map { |s| s.title }.join('<br/>') 
end 

Si votre "vue" est sur les sorties de la console:

Utilisez la méthode join avec \n:

def puzzle_find 
    title_array = self.puzzles.map { |s| s.title }.join('\n') 
end 

Exemple en console irb:

ruby-1.8.7-p334 :001 > puts ["a","b","c"].join("\n") 
a 
b 
c 
=> nil