2

对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之后添加一个额外的。这有关系吗?知道发生了什么吗?

4

2 回答 2

3

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

至于你的unless,我认为实际上没有必要。如果列表是,empty?那么 each 将只返回而不实际执行任何重复,因此循环内的代码将永远不会被调用。

于 2012-07-06T21:19:09.807 回答
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
于 2013-04-20T23:36:36.327 回答