게시물을 세 단락으로 나누기(each_slice 메서드)
본 보도의 목적
→ 제작 중 의외로 방법을 찾지 못했다
문장의 대상
방법 each_slice
사용법.
each_slice 방법은 블록에 전달되는 요소 수를 지정할 수 있습니다.
예:
sample.rbnumbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
numbers.each_slice(2) do |number1, number2|
puts " #{number1} : #{number2}"
end
↓↓↓↓↓↓↓↓↓↓↓
terminal% ruby sample.rb
1 : 2
3 : 4
5 : 6
7 : 8
9 : 10
만약 배열된 요소수를 다 제거할 수 없다면, 마지막 단락의 요소수만 감소한다
sample.rbnumbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
numbers.each_slice(3) do |number1, number2, number3|
puts " #{number1} : #{number2}: #{number3}"
end
↓↓↓↓↓↓↓↓↓↓↓
terminal% ruby sample.rb
1 : 2: 3
4 : 5: 6
7 : 8: 9
10 : :
실천
상기 each_나는 슬라이스 방법의 사용 방법에 대해 대체적으로 토론이 첨부되어 있다고 생각하지만, 사용 방법은 같다.
컨트롤러의 동작 내 데이터베이스에서 모든 투고 정보를 얻고 실례 변수를 대입한 후 이 실례 변수에 대해 each_슬라이스 방법을 사용합니다.
자신의 응용 프로그램에서 사용자 상세 페이지에 로그인한 사용자의 투고에 대한 모든 정보를 표시합니다.
users_controller.rbdef show
@records = @user.records.order("date DESC")
# ログインしユーザーの投稿を、選択した日付の降順で並び替えて全て取得
end
# @userには現在ログインしているユーザーの情報が代入されている。
# userモデルとrecord(記録)モデルを扱っているが、一対多の関係になっている。
show.html.erb<div class="card-space">
<% @records.each_slice(3) do |record1,record2,record3| %>
<div class="array-space">
<% if record1 != nil %>
<div class="card">
<div class="date-wrapper">
<% time1 = record1.date %>
<div class="selected-date"><%= record1.date.strftime("%Y/%m/%d(#{@wd[time1.wday]})") %></div>
<div class="last-updated-date">最終更新日時:<%= record1.updated_at.to_s(:datetime_jp) %></div>
</div>
<div class="skip-time-space">
<label class="question-rabel">どのくらいサボった?</label>
<div class="skip-time">
<%= "#{record1.time}分" %>
</div>
</div>
<div class="text-space">
<label class="question-rabel">何してた?</label>
<div class="what-skip">
<%= record1.skip %>
</div>
<label class="question-rabel">何すべきだった?</label>
<div class="to-do">
<%= record1.to_do %>
</div>
</div>
<div class="update-btns">
<%= link_to edit_record_path(record1.id), method: :get, class:"edit-link" do %>
<i class="far fa-edit fa-2x"></i>
<% end %>
<%= link_to record_path(record1.id), method: :delete, class:"delete-link" do %>
<i class="far fa-trash-alt fa-2x"></i>
<% end %>
</div>
</div>
<% end %>
<% if record2 != nil %>
<div class="card">
<div class="date-wrapper">
<% time2 = record2.date %>
<div class="selected-date"><%= record2.date.strftime("%Y/%m/%d(#{@wd[time2.wday]})") %></div>
<div class="last-updated-date">最終更新日時:<%= record2.updated_at.to_s(:datetime_jp) %></div>
</div>
<div class="skip-time-space">
<label class="question-rabel">どのくらいサボった?</label>
<div class="skip-time">
<%= "#{record2.time}分" %>
</div>
</div>
<div class="text-space">
<label class="question-rabel">何してた?</label>
<div class="what-skip">
<%= record2.skip %>
</div>
<label class="question-rabel">何すべきだった?</label>
<div class="to-do">
<%= record2.to_do %>
</div>
</div>
<div class="update-btns">
<%= link_to edit_record_path(record2.id), method: :get, class:"edit-link" do %>
<i class="far fa-edit fa-2x"></i>
<% end %>
<%= link_to record_path(record2.id), method: :delete, class:"delete-link" do %>
<i class="far fa-trash-alt fa-2x"></i>
<% end %>
</div>
</div>
<% end %>
<% if record3 != nil %>
<div class="card">
<div class="date-wrapper">
<% time3 = record3.date %>
<div class="selected-date"><%= record3.date.strftime("%Y/%m/%d(#{@wd[time3.wday]})") %></div>
<div class="last-updated-date">最終更新日時:<%= record3.updated_at.to_s(:datetime_jp) %></div>
</div>
<div class="skip-time-space">
<label class="question-rabel">どのくらいサボった?</label>
<div class="skip-time">
<%= "#{record3.time}分" %>
</div>
</div>
<div class="text-space">
<label class="question-rabel">何してた?</label>
<div class="what-skip">
<%= record3.skip %>
</div>
<label class="question-rabel">何すべきだった?</label>
<div class="to-do">
<%= record3.to_do %>
</div>
</div>
<div class="update-btns">
<%= link_to edit_record_path(record3.id), method: :get, class:"edit-link" do %>
<i class="far fa-edit fa-2x"></i>
<% end %>
<%= link_to record_path(record3.id), method: :delete, class:"delete-link" do %>
<i class="far fa-trash-alt fa-2x"></i>
<% end %>
</div>
</div>
<% end %>
</div>
<% end %>
</div>
실제로 일부 템플릿을 사용했기 때문에 일부 설명을 바꿨다.
여기의 요점은 각 투고의 코드를 표시하는 것이다<% if record1 != nil %>
<% end %>
<% if record2 != nil %>
<% end %>
<% if record3 != nil %>
<% end %>
이렇게 하면 분할된 블록 변수가 nil이 아니면 표시되는 포위입니다.
아까 each_slice 방법의 소개 예시에서 요소 수는 each_slice 방법으로 지정된 값을 할당할 수 없는 경우 마지막 단락에서만 요소 수가 줄어들지만 Rails에 위에서 설명한 대로 둘러싸여 있지 않으면 뷰 파일을 렌더링하는 동안 오류가 발생합니다.
참고문
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
numbers.each_slice(2) do |number1, number2|
puts " #{number1} : #{number2}"
end
% ruby sample.rb
1 : 2
3 : 4
5 : 6
7 : 8
9 : 10
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
numbers.each_slice(3) do |number1, number2, number3|
puts " #{number1} : #{number2}: #{number3}"
end
% ruby sample.rb
1 : 2: 3
4 : 5: 6
7 : 8: 9
10 : :
상기 each_나는 슬라이스 방법의 사용 방법에 대해 대체적으로 토론이 첨부되어 있다고 생각하지만, 사용 방법은 같다.
컨트롤러의 동작 내 데이터베이스에서 모든 투고 정보를 얻고 실례 변수를 대입한 후 이 실례 변수에 대해 each_슬라이스 방법을 사용합니다.
자신의 응용 프로그램에서 사용자 상세 페이지에 로그인한 사용자의 투고에 대한 모든 정보를 표시합니다.
users_controller.rb
def show
@records = @user.records.order("date DESC")
# ログインしユーザーの投稿を、選択した日付の降順で並び替えて全て取得
end
# @userには現在ログインしているユーザーの情報が代入されている。
# userモデルとrecord(記録)モデルを扱っているが、一対多の関係になっている。
show.html.erb<div class="card-space">
<% @records.each_slice(3) do |record1,record2,record3| %>
<div class="array-space">
<% if record1 != nil %>
<div class="card">
<div class="date-wrapper">
<% time1 = record1.date %>
<div class="selected-date"><%= record1.date.strftime("%Y/%m/%d(#{@wd[time1.wday]})") %></div>
<div class="last-updated-date">最終更新日時:<%= record1.updated_at.to_s(:datetime_jp) %></div>
</div>
<div class="skip-time-space">
<label class="question-rabel">どのくらいサボった?</label>
<div class="skip-time">
<%= "#{record1.time}分" %>
</div>
</div>
<div class="text-space">
<label class="question-rabel">何してた?</label>
<div class="what-skip">
<%= record1.skip %>
</div>
<label class="question-rabel">何すべきだった?</label>
<div class="to-do">
<%= record1.to_do %>
</div>
</div>
<div class="update-btns">
<%= link_to edit_record_path(record1.id), method: :get, class:"edit-link" do %>
<i class="far fa-edit fa-2x"></i>
<% end %>
<%= link_to record_path(record1.id), method: :delete, class:"delete-link" do %>
<i class="far fa-trash-alt fa-2x"></i>
<% end %>
</div>
</div>
<% end %>
<% if record2 != nil %>
<div class="card">
<div class="date-wrapper">
<% time2 = record2.date %>
<div class="selected-date"><%= record2.date.strftime("%Y/%m/%d(#{@wd[time2.wday]})") %></div>
<div class="last-updated-date">最終更新日時:<%= record2.updated_at.to_s(:datetime_jp) %></div>
</div>
<div class="skip-time-space">
<label class="question-rabel">どのくらいサボった?</label>
<div class="skip-time">
<%= "#{record2.time}分" %>
</div>
</div>
<div class="text-space">
<label class="question-rabel">何してた?</label>
<div class="what-skip">
<%= record2.skip %>
</div>
<label class="question-rabel">何すべきだった?</label>
<div class="to-do">
<%= record2.to_do %>
</div>
</div>
<div class="update-btns">
<%= link_to edit_record_path(record2.id), method: :get, class:"edit-link" do %>
<i class="far fa-edit fa-2x"></i>
<% end %>
<%= link_to record_path(record2.id), method: :delete, class:"delete-link" do %>
<i class="far fa-trash-alt fa-2x"></i>
<% end %>
</div>
</div>
<% end %>
<% if record3 != nil %>
<div class="card">
<div class="date-wrapper">
<% time3 = record3.date %>
<div class="selected-date"><%= record3.date.strftime("%Y/%m/%d(#{@wd[time3.wday]})") %></div>
<div class="last-updated-date">最終更新日時:<%= record3.updated_at.to_s(:datetime_jp) %></div>
</div>
<div class="skip-time-space">
<label class="question-rabel">どのくらいサボった?</label>
<div class="skip-time">
<%= "#{record3.time}分" %>
</div>
</div>
<div class="text-space">
<label class="question-rabel">何してた?</label>
<div class="what-skip">
<%= record3.skip %>
</div>
<label class="question-rabel">何すべきだった?</label>
<div class="to-do">
<%= record3.to_do %>
</div>
</div>
<div class="update-btns">
<%= link_to edit_record_path(record3.id), method: :get, class:"edit-link" do %>
<i class="far fa-edit fa-2x"></i>
<% end %>
<%= link_to record_path(record3.id), method: :delete, class:"delete-link" do %>
<i class="far fa-trash-alt fa-2x"></i>
<% end %>
</div>
</div>
<% end %>
</div>
<% end %>
</div>
실제로 일부 템플릿을 사용했기 때문에 일부 설명을 바꿨다.여기의 요점은 각 투고의 코드를 표시하는 것이다
<% if record1 != nil %>
<% end %>
<% if record2 != nil %>
<% end %>
<% if record3 != nil %>
<% end %>
이렇게 하면 분할된 블록 변수가 nil이 아니면 표시되는 포위입니다.아까 each_slice 방법의 소개 예시에서 요소 수는 each_slice 방법으로 지정된 값을 할당할 수 없는 경우 마지막 단락에서만 요소 수가 줄어들지만 Rails에 위에서 설명한 대로 둘러싸여 있지 않으면 뷰 파일을 렌더링하는 동안 오류가 발생합니다.
참고문
https://qiita.com/ota-yuki/items/ad91ffa8e95108ba3ef7
(2020년 12월 초경 열람)
https://docs.ruby-lang.org/ja/latest/method/Enumerable/i/each_slice.html
(2021년 1월 15일 열람)
Reference
이 문제에 관하여(게시물을 세 단락으로 나누기(each_slice 메서드)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/nari3922/items/c0609429a87e17092c19텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)