2012-01-22 5 views
1

私はPuzzleという名前のオブジェクトを持っています。私はそのオブジェクト上に「タイトル」の値を分離するために.mapを呼び出しています。私はそれらをきれいに印刷するために 'puts'を使いますが、何も返されません。Ruby on Railsを使った配列をあやふやに印刷

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

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

私は出力が私の見解では、このように見えるようにしようとしている:

title 1 
title 2 
title 3 
私は「プット」を使用していない場合、私はこのような配列を取得

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

おかげ

+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ファイルです。

使用参加方法\nと::

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

例では、あなたの "ビュー" は、コンソール出力についてです場合

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

使用すると、この方法は、あなたの配列に<br/>を挿入するために参加しますirbコンソール:

ruby-1.8.7-p334 :001 > puts ["a","b","c"].join("\n") 
a 
b 
c 
=> nil 
関連する問題