使用put in rails

时间:2013-12-16 19:51:44

标签: ruby-on-rails

我在控制器中有这个代码:

array = ["asd", "asd", "asd"]
    @print = array.each do |i|
       puts "Random text #{i}"
    end

现在我想在一些页面视图中打印它,比如show.html.erb:

<%= @print >

我得到了这个:["asd", "asd", "asd"]但是在控制器中我对数组中的每个对象说puts,但它没有这样做?

4 个答案:

答案 0 :(得分:4)

puts方法用于将字符串打印到控制台。如果您想将数组的每个值设置为某个值以便稍后打印出来,则应使用#map

array = ['asd', 'asd', 'asd']
@print = array.map { |i| "Random text #{i}" }

现在,在相应的视图中,您应该添加:

<% @print.each do |val| %>
  <%= val %>
<% end %>

答案 1 :(得分:2)

您应该在视图中进行循环。这有助于保持应用程序逻辑和视图代码之间的分离。

<强>控制器

@array = ["asd", "asd", "asd"]

查看

<% @array.each do |i|
  <%= i %>    # No need to use the puts method here
<% end %>

答案 2 :(得分:2)

puts打印到stdout(标准输出),在大多数情况下,它对应于启动Rails服务器的控制台。

检查控制台,您会在请求日志的中间找到puts语句的结果。

从控制台打印内容的更好方法是使用Rails记录器,尤其是如果您希望将此类输出记录在生产中的日志中。

Rails.logger.info "message"

假设它仅用于调试目的,那么可以使用puts(或p)。

答案 3 :(得分:0)

似乎变量@print是数组。每次加载页面时控制器运行一次,然后将其内容输出到视图。另外,“puts”用于将字符串打印到控制台。你应该把这个循环放在视图中,如下所示:

<% @array.each do |i| %>
  <%= i @>
<% end %>