[Rails]”알림을 어떠한 방법으로 알리기”의 구현

통지 기능에 도전했지만, 왠지 잘 안 된다.

공지사항




↑이런 느낌으로 읽지 않은 소식이 있으면, 빨간 점을 붙이는 것 같은 녀석을, javascript라든지, helper 파일의 액션을 사용하지 않고 구현하는 방법.

아직 알림 기능 자체를 구현하지 않은 분은 아래와 같은 알기 쉬운 기사를 참고로 구현합시다!
* htps : // 코 m / 고양이 r / ms / 80448944 에c9 아 네 48d0 아
* htps : // 이 m/유토_1014/이어서 ms/2db1d4fcd7945b980f7

상기의 기사로 도전했지만, 잘 안 된다, 라고 하는 나와 같은 문제를 안고 있는 분을 향해.

보려는 뷰에 연결되는 컨트롤러의 동작에 변수를 정의합니다.



events_controller.rb
  def index
    @notification = Notification.all
  end

notifications 테이블의 정보를 가져옵니다.

[간단] html.erb에 설명을 추가하기만 하면 됩니다.



index.html.erb
  <div class="alert-header">
      <%= link_to notifications_path do %>
        <span class="material-icons" id="alert">notification_important</span> 
        <% @notification.each do |notification| %>
          <% if (notification.visited_id == current_user.id) && notification.checked == false %>
            <span class="material-icons" id="on-alert">fiber_manual_record</span>
            <% break %>
          <% end %>
        <% end %>
      <% end %>
    </div>

■해설
<% @notification.each do |notification| %>

컨트롤러에서 정의한 @notification의 변수를 each 메소드를 사용해 통지 각각에 대해 처리가 행해지도록 한다.
블록 변수는 이번 notification 라고 했지만 무엇이든 OK.
<% if (notification.visited_id == current_user.id) && notification.checked == false %>
    <span class="material-icons">fiber_manual_record</span>
    <% break %>
<% end %>

if 조건식을 사용하여 visited_id또한, current_user.id (notifications 테이블의 checked 컬럼)의 값이 false (읽지 않음)이면, 이하의 처리를 행한다.
notification_checked 그렇지 않으면, 통지의 수만큼 처리가 반복되어 버리므로 주의.

이상.
몇 번 해도 잘 가지 못했기 때문에, 나름대로 어레인지 해 보았습니다.

비고



current_user.id는 로그인하고 있는 유저를 취득하기 위한 gem 'devise'를 도입한 것으로 사용할 수 있게 되는 헬퍼 메소드입니다만, 로그인하고 있는 유저의 ID를 취득할 수 있으면 OK.

머티리얼 아이콘의 도입은 아래의 기사를 참고로 부디
  • 머티리얼 아이콘 도입 방법
  • 좋은 웹페이지 즐겨찾기