对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>
[#<Employee id: 1, name: "Test 1", created_at: "2012-07-06 19:58:03", updated_at: "2012-07-06 19:59:55">, #<Employee id: 2, name: "Test", created_at: "2012-07-06 21:10:10", updated_at: "2012-07-06 21:10:10">]
<a href="/employees/new">Add Employee</a>
从语义上讲,循环后的unless
似乎不合适,但我的理解是,如果我想把它放在循环之前,我会在之后添加额外的end
。这有关系吗?知道发生了什么事吗?
答案 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