В моем Rails 4 приложения, у меня есть следующие модели:Rails 4: сортировка элементов в хронологическом порядке, в вложенном цикле
class User < ActiveRecord::Base
has_many :administrations
has_many :calendars, through: :administrations
end
class Calendar < ActiveRecord::Base
has_many :administrations
has_many :users, through: :administrations
has_many :posts
has_many :comments, through: :posts
end
class Administration < ActiveRecord::Base
belongs_to :user
belongs_to :calendar
end
class Post < ActiveRecord::Base
belongs_to :calendar
has_many :comments
end
class Comment < ActiveRecord::Base
belongs_to :post
belongs_to :user
delegate :first_name, to: :user, prefix: true
end
В моих Calendar#Index
зрении, мне нужно, чтобы отобразить список всех комментариев (от все сообщения и все календари) пользователя.
Итак, я обновил свой Calendar#Index
контроллер следующим образом:
def index
@user = current_user
@calendars = @user.calendars.all
end
И, на мой Calendar#Index
зрения, я написал следующий код:
<table id="my_todo_table">
<% @calendars.each do |calendar| %>
<% calendar.comments.each do |comment| %>
<tr>
<td><span class="glyphicon glyphicon-calendar" aria-hidden="true"></span> <%= link_to calendar.name, calendar_path(calendar.id) %></td>
<td><span class="glyphicon glyphicon-th-list" aria-hidden="true"></span> <%= comment.post.subject %> </td>
<td><span class="glyphicon glyphicon-user" aria-hidden="true"></span> <%= comment.user.first_name %></td>
<td><span class="glyphicon glyphicon-comment" aria-hidden="true"></span> <%= comment.body %></td>
</tr>
<% end %>
<% end %>
</table>
Это работает хорошо, за один небольшой, за исключением подробнее: в настоящее время комментарии сортируются по календарям, а затем по почте (что имеет смысл, учитывая код выше).
Вместо этого, я бы хотел, чтобы у нас были отсортированы в хронологическом порядке, т. Е. Самые последние сначала первые, независимо от того, какой календарь или сообщение принадлежит.
Есть ли способ достичь этого?
Спасибо за ваш ответ. Это будет заказывать мои комментарии? Или мои календари? –
Это закажет ваши календари. Это то, что вы ищете? Вам нужно будет заказать что-нибудь на основе календарей, сообщений или комментариев. – Cyzanfar
Нет, я не хочу заказывать календари. Я хочу заказать комментарии. –