2012-01-22 5 views
1

У меня есть объект с именем Puzzle, и я вызываю .map на нем, чтобы изолировать значения «title». Затем я использую «puts», чтобы печатать их аккуратно, но ничего не возвращается.Довольно печатать массив с Ruby on Rails

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

Если я не использую «путы», то я получаю массив так:

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

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

Я пытаюсь сделать вывод выглядеть следующим образом, на мой взгляд:

title 1 
title 2 
title 3 

благодаря

+1

Метод puzzle_find не должен нести ответственность за печать массива. Просто верните массив и обработайте, как вы хотите отобразить его в представлении. – Robin

ответ

3

Сборник названий должен быть подготовлен в контроллере (или подвергается контроллером и извлекаются в модели, или и т.д., до тех пор, пока есть коллекция названий в конце всего этого):

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

Вид:

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

(или завернуть в частичной, или использовать помощника. Выше предполагается очистка от плохой HTML.)

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

Привет Когда вы говорите, "мое мнение", я предполагаю это файл html.erb.

Использование присоединиться метод для вставки <br/> в массиве:

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

Если "вид" о консольных выходов:

Использование присоединиться метод с \n:

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

Пример в irb console:

ruby-1.8.7-p334 :001 > puts ["a","b","c"].join("\n") 
a 
b 
c 
=> nil 
Смежные вопросы