使用Ruby on Rails打印数组

时间:2012-01-22 20:13:17

标签: ruby-on-rails ruby view

我有一个名为Puzzle的对象,我在它上面调用.map以隔离'title'值。然后我使用'puts'来整齐地打印它们,但没有返回。

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

如果我不使用'puts',那么我得到这样的数组:

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

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

我试图在我的视图中使输出看起来像这样:

title 1
title 2
title 3

谢谢

3 个答案:

答案 0 :(得分:3)

标题集应该在控制器中准备(或者由控制器公开并在模型中检索,或者等等,只要在所有标题的末尾都有标题集合):

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

查看:

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

(或者将其包装成部分,或者使用帮助器。上面假设已经擦除了HTML的不良。)

答案 1 :(得分:1)

title_array.each do |title|
  puts title
end

答案 2 :(得分:0)

嗨当你说“我的观点”时,我认为它是html.erb文件。

使用join方法将<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 
相关问题