2017-01-10 3 views
1

Ich habe eine Rails-App, mit der Benutzer Kommentare zu einer bestimmten Aufgabe geben können, und jedes Mal, wenn ein Kommentar zu einer Aufgabe gesendet wird, sollten die Benutzer, die diesem Projekt folgen, eine Benachrichtigung erhalten. Meine Ajax-Benachrichtigungen Pop-up nicht, wenn ich auf das Symbol klicken Benachrichtigungen:Benachrichtigungen nicht geladen in meiner Schiene App

notifications.js.coffee

class Notifications 
    constructor: -> 
     @notifications = $("[data-behavior='notifications']") 
     @setup() if @notifications.length >0 

    setup: -> 
     $.ajax(
      url: "/notifications.json" 
      dataType: "JSON" 
      method: "GET" 
      success: @handleSuccess 
     ) 

    handleSuccess: (data) => 
     items = $.map data, (notification) -> 
      "<a class='dropdown-item' href="#">#{notification.actor} #{notification.action} #{nofication.notifiable.type}</a>" 
     $("[data-behavior='notification-items']").html(items) 

jQuery -> 
    new Notifications 

_navigation_links.html.erb Teil (wo meine Benachrichtigungen Symbol gehalten wird)

<button class="navbar-toggle" data-toggle="collapse" data-target=".navHeaderCollapse"> 
    <span class="glyphicon glyphicon-user white"></span> 
</button> 
<div class="collapse navbar-collapse navHeaderCollapse"> 
    <ul class="nav navbar-nav"> 

     <li><%= link_to "start a project", new_project_path %></li> 

     <% if user_signed_in? %> 

     <li class="nav-item btn-group" data-behavior="notifications"> 
      <a class="dropdown-toggle nav-link" type="button" id="dropdownMenu1" data-toggle="dropdown" aria-haspopup="true" aria-expanded="fa"> 
       <%= fa_icon "bell" %> 
      </a> 
      <div class="dropdown-menu" aria-labelledby="dropdownMenu1" data-behavior="notification-items"> 

      </div> 
     </li> 

     <div class="dropdown" style="float: right; margin-left: 20px; margin-top: 15px;"> 
      <li class="dropdown-toggle" id="dropdownMenu1" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true" style="cursor: pointer;"> 
      <%= current_user.username %> 
      <span class="caret"></span> 
      </li> 
      <ul class="dropdown-menu" aria-labelledby="dropdownMenu1"> 
       <li><%= link_to 'My Profile', users_following_user_path(current_user) %></li> 
      <li><%= link_to 'Edit Profile', profile_user_path(current_user) %></li> 
       <li><%= link_to 'Account Settings', edit_user_path(current_user) %></li> 
      <li role="separator" class="divider"></li> 
       <li><%= link_to 'Log out', destroy_user_session_path, method: :delete %></li> 
      </ul> 
     </div> 
     <% elsif %> 
      <li><%= link_to "Sign Up", new_user_registration_path %></li> 
      <li><%= link_to "Sign In", new_user_session_path %></li> 
     <% end %> 

    </ul> 
</div> 

routes.rb

resources :notifications 

notification.rb Modell

Aus den paar Tutorials, die ich verfolgt habe, sollten die Benachrichtigungen erscheinen, wenn ich auf das Glockensymbol in den Navigationslinks klicke. Das Javascript funktioniert jedoch nicht ...

Jede Hilfe wird sehr geschätzt.

+0

Gibt es Fehler in der Konsole? – max

Antwort

1

Es gibt Tippfehler in der notifications.js.coffee Datei finden Sie in der handleSuccess Funktion an die folgende (ändern href="#" zu href='#') ändern:

handleSuccess: (data) => 
    items = $.map data, (notification) -> 
     "<a class='dropdown-item' href='#'>#{notification.actor} #{notification.action} #{nofication.notifiable.type}</a>" 
    $("[data-behavior='notification-items']").html(items) 

Dies sollte das Problem beheben.

Verwandte Themen