【Rails】복수 모델의 작성 일자 일람을 중복 없이 표시한다
공부용 앱을 작성하는 동안 구현한 저장된 답변(여러 모델 존재)을 날짜순으로 중복 없이 표시하는 방법입니다.
실현하고 싶은 것
users_controller의 show 액션으로 대답 작성 일자 일람을 view에 표시해 각각의 일자를 클릭하면 그 일에 작성된 대답 일람을 확인할 수 있도록(듯이) 하고 싶다.
※아래 그림의 이미지
모델
응답 모델로서 「answer」과 「reaction」이 존재.
show 액션 및 view 내용
users_controller.rb def show
@answers_dates = current_user.answers.map{|dates| dates.created_at.to_date}
@reactions_dates = current_user.reactions.map{|dates| dates.created_at.to_date}
@dates = @answers_dates.push(@reactions_dates).flatten.uniq.sort.reverse
end
show.html.erb <% @dates.each do |record| %>
<li>
<%= link_to record, answers_path(created_at: record) %>
</li>
<% end %>
내용 설명
@answers_dates = current_user.answers.map{|dates| dates.created_at.to_date}
@reactions_dates = current_user.reactions.map{|dates| dates.created_at.to_date}
모든 응답과 반응을 인스턴스 변수에 배열로 저장합니다. 동시에 연월일만 표시되면 좋기 때문에 to_date 메소드를 사용하여 변환.
@dates = @answers_dates.push(@reactions_dates).flatten.uniq.sort.reverse
두 개의 배열을 push 메소드로 결합. 결합하면 배열이 중첩 구조가 되므로(ex,[2021-09-08, [2021-09-08,2021-09-09]]), flatten 메소드로 중첩 구조를 제외한다. uniq 메소드로 중복을 제거하고, 또한 sort.reverse로 날짜가 가까운 순서로 정렬한다.
※ 중첩 구조를 제거하지 않으면 uniq에서 위의 예라면 2021-09-08의 중복을 제거할 수 없다.
<% @dates.each do |record| %>
<li>
<%= link_to record, answers_path(created_at: record) %>
</li>
<% end %>
이후에는 표시되는 날짜에 링크를 부속해, 그 일자를 params로서 패스에 주는 것으로 그 일자에 작성된 모델을 꺼낼 수 있다.
Reference
이 문제에 관하여(【Rails】복수 모델의 작성 일자 일람을 중복 없이 표시한다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Yuya-hs/items/f161f80534e71e493273
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
응답 모델로서 「answer」과 「reaction」이 존재.
show 액션 및 view 내용
users_controller.rb def show
@answers_dates = current_user.answers.map{|dates| dates.created_at.to_date}
@reactions_dates = current_user.reactions.map{|dates| dates.created_at.to_date}
@dates = @answers_dates.push(@reactions_dates).flatten.uniq.sort.reverse
end
show.html.erb <% @dates.each do |record| %>
<li>
<%= link_to record, answers_path(created_at: record) %>
</li>
<% end %>
내용 설명
@answers_dates = current_user.answers.map{|dates| dates.created_at.to_date}
@reactions_dates = current_user.reactions.map{|dates| dates.created_at.to_date}
모든 응답과 반응을 인스턴스 변수에 배열로 저장합니다. 동시에 연월일만 표시되면 좋기 때문에 to_date 메소드를 사용하여 변환.
@dates = @answers_dates.push(@reactions_dates).flatten.uniq.sort.reverse
두 개의 배열을 push 메소드로 결합. 결합하면 배열이 중첩 구조가 되므로(ex,[2021-09-08, [2021-09-08,2021-09-09]]), flatten 메소드로 중첩 구조를 제외한다. uniq 메소드로 중복을 제거하고, 또한 sort.reverse로 날짜가 가까운 순서로 정렬한다.
※ 중첩 구조를 제거하지 않으면 uniq에서 위의 예라면 2021-09-08의 중복을 제거할 수 없다.
<% @dates.each do |record| %>
<li>
<%= link_to record, answers_path(created_at: record) %>
</li>
<% end %>
이후에는 표시되는 날짜에 링크를 부속해, 그 일자를 params로서 패스에 주는 것으로 그 일자에 작성된 모델을 꺼낼 수 있다.
Reference
이 문제에 관하여(【Rails】복수 모델의 작성 일자 일람을 중복 없이 표시한다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Yuya-hs/items/f161f80534e71e493273
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
def show
@answers_dates = current_user.answers.map{|dates| dates.created_at.to_date}
@reactions_dates = current_user.reactions.map{|dates| dates.created_at.to_date}
@dates = @answers_dates.push(@reactions_dates).flatten.uniq.sort.reverse
end
<% @dates.each do |record| %>
<li>
<%= link_to record, answers_path(created_at: record) %>
</li>
<% end %>
@answers_dates = current_user.answers.map{|dates| dates.created_at.to_date}
@reactions_dates = current_user.reactions.map{|dates| dates.created_at.to_date}
모든 응답과 반응을 인스턴스 변수에 배열로 저장합니다. 동시에 연월일만 표시되면 좋기 때문에 to_date 메소드를 사용하여 변환.
@dates = @answers_dates.push(@reactions_dates).flatten.uniq.sort.reverse
두 개의 배열을 push 메소드로 결합. 결합하면 배열이 중첩 구조가 되므로(ex,[2021-09-08, [2021-09-08,2021-09-09]]), flatten 메소드로 중첩 구조를 제외한다. uniq 메소드로 중복을 제거하고, 또한 sort.reverse로 날짜가 가까운 순서로 정렬한다.
※ 중첩 구조를 제거하지 않으면 uniq에서 위의 예라면 2021-09-08의 중복을 제거할 수 없다.
<% @dates.each do |record| %>
<li>
<%= link_to record, answers_path(created_at: record) %>
</li>
<% end %>
이후에는 표시되는 날짜에 링크를 부속해, 그 일자를 params로서 패스에 주는 것으로 그 일자에 작성된 모델을 꺼낼 수 있다.
Reference
이 문제에 관하여(【Rails】복수 모델의 작성 일자 일람을 중복 없이 표시한다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Yuya-hs/items/f161f80534e71e493273텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)