我在控制器中有这个代码:
array = ["asd", "asd", "asd"]
@print = array.each do |i|
puts "Random text #{i}"
end
现在我想在一些页面视图中打印它,比如show.html.erb:
<%= @print >
我得到了这个:["asd", "asd", "asd"]
但是在控制器中我对数组中的每个对象说puts
,但它没有这样做?
答案 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 %>