2012-01-22 61 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