Why: There are Notifications with associated `notifiables` that actually are not anymore Notifiables (the class doesn't include the Notifiable concern). So when Notification delegates certain "notifiable" methods to them the is an error. How: Using `try` directly on the notifiable association to avoid the delegate trap on those corner case scenarios.
29 lines
1.2 KiB
Plaintext
29 lines
1.2 KiB
Plaintext
<li id="<%= dom_id(notification) %>" class="notification <%= 'unread' if notification&.unread? %>">
|
|
<% if notification.notifiable.try(:notifiable_available?) %>
|
|
<% locals = { notification: notification,
|
|
timestamp: notification.timestamp,
|
|
title: notification.notifiable_title,
|
|
body: notification.notifiable.try(:body) } %>
|
|
<% link_text = render partial: '/notifications/notification_body', locals: locals %>
|
|
<%= link_to_if notification.link.present?, link_text, notification.link %>
|
|
<% else %>
|
|
<p>
|
|
<strong>
|
|
<%= t("notifications.notification.notifiable_hidden") %>
|
|
</strong>
|
|
</p>
|
|
<% end %>
|
|
|
|
<% if notification.unread? %>
|
|
<%= link_to t("notifications.notification.mark_as_read"),
|
|
mark_as_read_notification_path(notification),
|
|
method: :put, remote: true,
|
|
class: "mark-notification small" %>
|
|
<% else %>
|
|
<%= link_to t("notifications.notification.mark_as_unread"),
|
|
mark_as_unread_notification_path(notification),
|
|
method: :put, remote: true,
|
|
class: "mark-notification small" %>
|
|
<% end %>
|
|
</li>
|