为什么Rails输出我的数组?

时间:2012-07-06 21:16:39

标签: ruby-on-rails ruby

对rails很新。构建一个假设的小应用程序,以显示员工在日历中的休假日。我正在尝试列出那些带有清单的员工(以自定义输出),并且我得到了似乎是数组的东西,一旦循环结束就吐了回来。无法弄清楚原因 - 我没有直接输出的要求。当循环结束时,它似乎正在吐出。有什么帮助吗?

<%= @employees.each do |empl| %>
    <label><%= check_box 'employee','id',{:checked => 'checked' },empl.id %>
    <%= link_to empl.name, edit_employee_path(empl), :target => '_blank' %></label>
<% end unless @employees.empty? %>
<%= link_to 'Add Employee', new_employee_path %>

这是输出:

<label><input name="employee[id]" type="hidden" value="0" /><input checked="checked" id="employee_id" name="employee[id]" type="checkbox" value="1" />
    <a href="/employees/1/edit" target="_blank">Test 1</a></label>
<label><input name="employee[id]" type="hidden" value="0" /><input checked="checked" id="employee_id" name="employee[id]" type="checkbox" value="2" />
    <a href="/employees/2/edit" target="_blank">Test</a></label>
[#&lt;Employee id: 1, name: &quot;Test 1&quot;, created_at: &quot;2012-07-06 19:58:03&quot;, updated_at: &quot;2012-07-06 19:59:55&quot;&gt;, #&lt;Employee id: 2, name: &quot;Test&quot;, created_at: &quot;2012-07-06 21:10:10&quot;, updated_at: &quot;2012-07-06 21:10:10&quot;&gt;]
<a href="/employees/new">Add Employee</a>

从语义上讲,循环后的unless似乎不合适,但我的理解是,如果我想把它放在循环之前,我会在之后添加额外的end。这有关系吗?知道发生了什么事吗?

2 个答案:

答案 0 :(得分:3)

<%= @employees.each do |empl| %>更改为<%- @employees.each do |empl| %>,它将停止输出列表。也就是说,将=更改为-。使用=告诉ERB输出该命令的结果。当您调用each时,它会返回列表,以便列表输出。

至于你的unless,我认为这不是必要的。如果列表是empty?,则每个都将返回而不实际执行任何重复,因此循环内的代码将永远不会被调用。

答案 1 :(得分:0)

在ERB中,只需删除=即可。

<% Ruby code -- inline with output %>
<%= Ruby expression -- replace with result %>
<%# comment -- ignored -- useful in testing %>
%% replaced with % if first thing on a line and % processing is used
<%% or %%> -- replace with <% or %> respectively