Ruby on Rails中的未定义方法`reverse' - 在表中显示数据

时间:2015-03-17 17:55:38

标签: ruby-on-rails

我试图展示该模型的所有实例' Project'在表格中,使用以下代码:

<table style="table-layout: fixed;">
  <% @projects.each.reverse do |project| %>
    <tr>        
        <td style="width: 10%;"><%=link_to project.owner.upcase,user_path(project.owner) %> </td>

        <td><%= link_to project.title,  project_path(project) %></td>
        <td style=""><%= project.comments.pluck(:body).last || project.descr %></td>
        <td><%= project.sdate.strftime('%d/%m/%y') %></td>

      <td><%= project.comments.pluck(:expdate).last.try(:strftime, '%d/%m/%Y') || project.edate.strftime('%d/%m/%y') %></td>

        <td>
            <%= link_to 'Edit', edit_project_path(project) %> <br>
            <%= link_to 'Delete', project_path(project), method: :delete, data: { confirm: 'Are you sure?' } %>
        </td>

    </tr>
  <% end %>
</table>

但是我收到了这个错误:

项目#index

中的

NoMethodError

reverse

的未定义方法#<Enumerator:0x44bc9c8>

任何人都可以说出错误吗?

我在其他地方使用过类似的线,但它运行良好:

<%= render @project.comments.reverse %>

提前致谢!

2 个答案:

答案 0 :(得分:1)

您试图反转单个对象而不是集合。

Aswin说:@projects.reverse.each代替each之前的reverse

答案 1 :(得分:1)

您在reverse的结果(each)上调用了Enumerator方法,而reverseEnumerable上的方法。在使用each进行迭代之前,您需要先反转集合/数组。试试这个。

@projects.reverse.each do |project|