Sort by date in descending order in ruby in rails

Viewed 25869

I would like to sort my list in a descending order by date which as a "New user list", in the database I have a column which is

t.datetime "created_at",                                      null: false  

This is the time when a new user registered, in the view, I have the code like this:

%table.table.table-striped.table-hover
      %thead
      %h3 New Users
      %hr
        %th Name
        %th Company
        %th Role
        %th Created date
        %th{:width => '50'}
        %th{:width => '50'}
        %th{:width => '50'}
      %tbody
      - @users.each do |user|
        -if user.role == "trial-member"
          - @created_at.sort{|a,b| b.created_at <=> a.created_at}.each do |created_at|
            %tr
            %td
              = user.first_name
              = user.last_name
            %td= user.company
            %td= user.role
            %td= user.created_at
            %td= link_to 'Approve', edit_user_path(user),  {:class => 'btn btn-success btn-sm'}

but this gives an error that "undefined method `sort' for nil:NilClass", what shall I do to sort the list in table descending by created date? Thank you.

2 Answers

It's because @created_at is not defined anywhere. So, any instance variable which is not defined, by default returns nil. If you want to display the users in sorted order, then you need to fetch @users in order.

@users = User.order(created_at: :desc)
Related