두 모델, 게시물 및 댓글이 있으며 최근 5 개의 댓글 제목을 표시하려고합니다.게시물에 속한 최근 5 개의 댓글을 표시합니다.
<%= Post.limit(5).order('created_at desc') %>
내게 마지막 5 개의 게시물을 제공합니다.
어떻게 마지막 5 개의 댓글과 제목을 얻을 수 있습니까?
두 모델, 게시물 및 댓글이 있으며 최근 5 개의 댓글 제목을 표시하려고합니다.게시물에 속한 최근 5 개의 댓글을 표시합니다.
<%= Post.limit(5).order('created_at desc') %>
내게 마지막 5 개의 게시물을 제공합니다.
어떻게 마지막 5 개의 댓글과 제목을 얻을 수 있습니까?
단지 지난 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 %>
이 두 가지 문제가 있습니다
은이 방법을 얻을 수 있습니다. 컨트롤러에서 수행해야합니다.
참고하여 해결할 수 있습니다.
난 당신이 찾고있는 생각 :
Comment.select(:title).order('created_at desc').limit(5).map {|c| c.title}
이 만든 마지막 5 개의 코멘트 당신에게 제목의 배열을 제공 할 것입니다. 다른 속성이 필요한 경우 (Comment.select([:title, :owner])
) select 메소드에 추가하거나 select 및 fetch all 주석 속성을 제거하십시오.
이제 모든 게시물에 대한 마지막 5 개의 댓글을 반환합니다. 어떻게 하나의 게시물로 그것을 제한하는 모든 아이디어? – user2759575
@ user2759575 예,'@ post.comments.select (: title) .order ('created_at desc') .limit (5) .map {| c | c.title}'. 또한 HungryCoder에 따르면, 뷰 대신 컨트롤러에서이 값을로드하여 인스턴스 변수에 할당해야합니다. 쿼리와 디스플레이 관심사를 좀 더 구분합니다. – jvperrin
조언 해 주셔서 감사합니다. 레일을 처음 사용하고 아직 배우기! :) – user2759575
그 덕분에, 답변 주셔서 감사합니다! – user2759575