使用ERB阵列的打印元件(Printing elements of array using ERB)

2019-08-02 06:59发布

我想打印在我的控制器中定义了我的观点对每个元素的新线一个简单的数组。 但它在做什么是打印在一行整个阵列。

这里是我的控制器:

class TodosController < ApplicationController
  def index
    @todo_array = [ "Buy Milk", "Buy Soap", "Pay bill", "Draw Money" ]
  end
end

这是我的看法:

<%= @todo_array.each do |t| %>
<%= puts t %><\br>
<% end %>

这里的结果:

<\br> <\br> <\br> <\br> ["Buy Milk", "Buy Soap", "Pay bill", "Draw Money"]

Answer 1:

厄尔布,你用你的意见的模板引擎,具有嵌入模板内的Ruby代码的几个不同的方法。

当你把里面的代码<%= %>块,再培训局内部评估的代码,并打印在HTML的最后一个语句的值。 由于.each在红宝石返回集合你遍历,使用环<%= %>试图打印整个阵列的字符串表示。

当你把里面的代码<% %>块,该局只是评估代码,不打印任何东西。 这允许你做的条件语句,循环,或在视图中修改变量。

您也可以删除putsputs t 。 厄尔布知道要尝试它看到里面的最后一个值转换<%= %>成用于显示的字符串。



Answer 2:

嘿,你为什么把“=”号在第一线。 <%%>用于告诉轨道,根据此字符串是红宝石代码,评估它。 凡为<%=%>这告诉Rails该字符串中这些标签是红宝石,评估并打印出结果在HTML文件中了。

因此,尝试检查你的代码编写

<%= @ todo_array.each做| T | %>而这条线是仅用于遍历@todo_array因此,我们不会在需要打印该行。 所以,最终的代码应该是

<% @todo_array.each do |t| %>
 <%= puts t %>
<% end %>


Answer 3:

两个问题你的看法:

  1. 您使用的“<%=”你应该使用“<%”。
  2. 你并不需要“放”

这应该改善您的结果:

<% @todo_array.each do |t| %>
  <%= t %><\br>
<% end %>

我会进一步考虑使用一些HTML结构,以便更好地组织你的待办事项列表(而不是使用BR标签在线路末端),或许是一个未排序列表如下所示:

<ul>
  <% @todo_array.each do |t| %>
    <li><%= t %></li>
  <% end %>
</ul>


Answer 4:

试一试:

<%= @todo_array.join('<br />').html_safe %>

代替

<%= @todo_array.each do |t| %>
   <%= puts t %><\br>
<% end %>


Answer 5:

从您的每个语句删除等号:

<% @todo_array.each do |t| %>
  <%= t %><\br>
<% end %>


文章来源: Printing elements of array using ERB