Uygulama denetleyicimde uygulama düzeni menüsünde bildirimleri ve bildirimler simgesini ayarlamak için kullandığım bir yöntem var.Güncelleştirme uygulama düzeni simgesi
def set_notifications
if user_signed_in?
@notifications = Notification.where(user_id: current_user.id)
@notifications.each do |n|
if n.read == false
return @icon_path = 'notification-alert-icon'
end
end
@icon_path = 'notification-icon'
end
end
Ben okunmamış bildirimleri varken doğru bildirim simgesini olsun bu iyi çalışır: Ben before_action ile bu yöntemi çalıştırmak
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false"><%= image_tag(@icon_path) %></a>
<ul class="dropdown-menu">
<% if @notifications == 0 %>
<li class="text-center" style="color:white;">Você ainda não tem notificações</li>
<% else %>
<% @notifications.each do |n| %>
<li><%= link_to n.question.title, question_path(n.question), class: 'text-center' %></li>
<% end %>
<% end %>
<li role="separator" class="divider"></li>
<li><%= link_to 'Ver todas as notificações', "#" %></li>
</ul>
</li>
kullanıcı bildirim simgesini tıkladığını ve soru tıkladığında o Yapacak edemedik ne
notifications = Notification.where(question_id: question.id) if Notification.exists?(question_id: question.id)
if notifications
notifications.each do |notification|
if notification.user_id == current_user.id
notification.read = true
notification.save
end
end
end
geçerli:: (gösteri eylemi içinde) okundu olarak haberdar edildi questions_controller o bildirim işaretler ben güncelleme nasıl @ bildirimi okundu olarak işaretledikten sonra bildirim nesnesi ve uygulama düzenindeki bildirim simgesi? Biliyorum set_notifications yöntemini çağırabilirim ama tek başına uygulama düzenini yeniden yüklemez ve simgeyi değiştirmez mi?
Bana cevap vermek için zaman ayırdığınız için teşekkürler! Sayfamıza ilk kez eriştiğimde, uygulama denetleyicisi uygulama düzenini doğru bir şekilde çalıştırır ve işler mi? sonra herhangi bir bağlantıyı tıklatıp başka bir denetleyiciye/eyleme gittiğimde, bu, uygulama denetleyicisinin yeniden çalışacağı ve uygulama düzenini tekrar oluşturacağı anlamına gelmez, değil mi? Bağlantıyı tıklattığımda ve raylar, questions_controller # show komutunu çalıştırdığında, daha önce yüklenmiş olan uygulama yerleşimi içinde show.html.erb yerine uygulama düzeni de dahil olmak üzere tüm düzeni yeniden yükleyebilir mi? ya da js kullanmak zorunda kalmanın anlamı nedir? – Rob
Rails için varsayılan davranış, genel olarak HTTP gibi istek/yanıttır. Rails tarafındaki hiçbir durum, "oturum", veritabanı veya diskteki dosyalarda kaldığınızdan başka bir şekilde korunmaz. Her sayfa isteği, yeni bir denetleyici örneği ve örnek değişkenler kadar temiz bir sayfa listesiyle başlar. Ne demek "düzeni yeniden yükle"? Her sayfa isteği her seferinde sıfırdan çalışır. – tadman
Yani, eğer varsa, bu bağlantıyı tıklattığımda <% = link_to 'question', question_path (question)%>, , raylar uygulama denetleyicisinin yeni bir örneğini ve soru denetleyicisinin yeni bir örneğini çalıştıracaktır? – Rob