2013-10-14 3 views
0

У меня есть две модели, сообщения и комментарии, и я пытаюсь показать последние 5 комментариев.Показаны последние 5 комментариев, которые относятся к сообщению

<%= Post.limit(5).order('created_at desc') %> 

дает мне последние 5 сообщений.

Как получить последние 5 комментариев и только заголовки?

ответ

1

Для получения только 5 последних комментариев, вы можете использовать этот

Comment.limit(5).order('created_at desc').select(:title) 

Показаны название должности, похоже, что вы хотите получить последние 5 комментариев к записи.

Вы можете получить этот путь:

<% Post.limit(5).order('created_at desc').each do |post| %> 
    <% post.comments.select(:title).order('created_at desc').limit(5).each do |comment| %> 
    <%= comment.title %> 
    <% end %> 
<% end %> 

Есть две проблемы:

  • вы обращаетесь к модели непосредственно из вида. Вы должны сделать это от Контроллер
  • Проблема с N + 1. Вы можете решить ее eager loading associations

Примечание: Я не мог проверить их, но я предполагаю, что они будут работать или будет, по крайней мере, дать вам идею.

+0

Это сработало, спасибо за ответ! – user2759575

1

Я думаю, что вы ищете:

Comment.select(:title).order('created_at desc').limit(5).map {|c| c.title} 

Это даст вам множество названий за 5 последних комментариев, созданных. Если вам нужны другие атрибуты, добавьте их к выбранному методу (Comment.select([:title, :owner])) или удалите атрибуты выбора и выберите все комментарии.

+0

Теперь я понимаю, что возвращает последние 5 комментариев для всех сообщений. Любая идея, как ограничить его только одним сообщением? – user2759575

+0

@ user2759575 Да, попробуйте '@ post.comments.select (: title) .order ('created_at desc'). Limit (5) .map {| c | c.title} '. Кроме того, как говорит HungryCoder, вы, вероятно, должны загружать это в своем контроллере вместо представления и назначать его переменной экземпляра. Он просто отделяет запрос и отображает проблемы немного больше. – jvperrin

+0

Спасибо за совет. Новые для рельсов и до сих пор учатся! :) – user2759575

Смежные вопросы