Ich benutze die Benachrichtigung gem von Schienen-Motorhttps://github.com/rails-engine/notifications. Es scheint zu versagen, wenn ich auf die Controller-Index-Seite dafür traverse. Es behauptet, dass die Links in meiner Navigation teilweise undefiniert sind, wenn sie eindeutig sind. Der NotificationController ist der einzige, der dieses Problem gerade hat. Ich habe dieses Juwel nie vor heute benutzt. Mein Code ist untenNavbar Partial Werfen ActionView :: Template :: Fehler Ausnahme für Benachrichtigung Gem
Exception
Started GET "/notifications" for 127.0.0.1 at 2017-09-04 16:06:51 -0400
Processing by Notifications::NotificationsController#index as HTML
User Load (1.0ms) SELECT "users".* FROM "users" WHERE "users"."id" = $1 ORDER BY "users"."id" ASC LIMIT $2 [["id", 1], ["LIMIT", 1]]
Notification Load (0.0ms) SELECT "notifications".* FROM "notifications" WHERE "notifications"."user_id" = $1 ORDER BY id desc LIMIT $2 OFFSET $3 [["user_id", 1], ["LIMIT", 25], ["OFFSET", 0]]
Rendering notifications/notifications/index.html.erb within layouts/application
Rendered notifications/notifications/index.html.erb within layouts/application (96.1ms)
Rendered nav_partials/_user_navbar.html.erb (2572.3ms)
Completed 500 Internal Server Error in 8155ms (ActiveRecord: 1.0ms)
ActionView::Template::Error (undefined local variable or method `dashboard_index_path' for #<#<Class:0xc0ceb08>:0xc0ccff0>):
6:
7: <ul class="navbar-nav mr-auto mt-2 mt-md-0 user-nav-li-padding">
8: <li class="nav-item white-nav-link mobile-nav-link">
9: <%= active_link_to dashboard_index_path, class_active: 'nav-link active', :class_inactive => 'inactive' do %>
10: <div class="left">
11: <%= inline_svg 'user_navbar_icons/home_icon_inactive.svg', width: 50, height: 50 %>
12: </div>
_navbar.html.erb
<nav class="navbar fixed-top navbar-toggleable-sm pull-nav-to-front">
<button class="navbar-toggler navbar-toggler-right hidden-md-up" type="button" data-toggle="collapse" data-target="#navbar-collapse" aria-controls="#navbar-collapse" aria-expanded="false" aria-label="toggle navigation" style="background-color: #fdfeff;">☰</button>
<div class="collapse navbar-collapse mobile-nav-bg" id="navbar-collapse">
<ul class="navbar-nav mr-auto mt-2 mt-md-0 user-nav-li-padding">
<li class="nav-item white-nav-link mobile-nav-link">
<%= active_link_to dashboard_index_path, class_active: 'nav-link active', :class_inactive => 'inactive' do %>
<div class="left">
<%= inline_svg 'user_navbar_icons/home_icon_inactive.svg', width: 50, height: 50 %>
</div>
<div class="right">
<p>My Dashboard</p>
</div>
<% end %>
</li>
<li class="nav-item white-nav-link mobile-nav-link">
<%= active_link_to posts_path, class_active: 'nav-link active', :class_inactive => 'inactive' do %>
<div class="left">
<%= inline_svg 'user_navbar_icons/post_icon_inactive.svg', width: 50, height: 50 %>
</div>
<div class="right">
<p>Posts</p>
</div>
<% end %>
</li>
<li class="nav-item white-nav-link mobile-nav-link">
<%= active_link_to mailbox_index_path, class_active: 'nav-link active', :class_inactive => 'inactive' do %>
<div class="left">
<%= inline_svg 'user_navbar_icons/mail_icon_inactive.svg', width: 50, height: 50 %>
</div>
<div class="right">
<p>Messages</p>
</div>
<% end %>
</li>
<li class="nav-item white-nav-link mobile-nav-link">
<small class="badge badge-default notifications-counter-badge"><%= notification_count_for(current_user) %></small>
<%= active_link_to notifications_path, class_active: 'nav-link active', :class_inactive => 'inactive' do %>
<div class="left">
<%= inline_svg 'user_navbar_icons/notification_icon_inactive.svg', width: 50, height: 50 %>
</div>
<div class="right">
<p>Notifications</p>
</div>
<% end %>
</li>
<li class="nav-item white-nav-link mobile-nav-link">
<%= active_link_to favorites_index_path, class_active: 'nav-link active', :class_inactive => 'inactive' do %>
<div class="left">
<%= inline_svg 'user_navbar_icons/favorite_icon_inactive.svg', width: 50, height: 50 %>
</div>
<div class="right">
<p>Favorites</p>
</div>
<% end %>
</li>
<li class="nav-item white-nav-link mobile-nav-link">
<div class="dropdown">
<%= active_link_to '#', active: false, class: 'btn dropdown-toggle', class_active: 'nav-link active ', :class_inactive => 'inactive', id: 'dropdownmenubtn', data: { toggle: 'dropdown' }, aria: {haspopup: true, expanded: false } do %>
<div class="left">
<%= inline_svg 'user_navbar_icons/settings_icon_inactive.svg', width: 50, height: 50 %>
</div>
<div class="right">
<p>Settings</p>
</div>
<div class="dropdown-menu dropdown-menu-right settings-dropdown-menu-margin-pos dropdown-menu-font-color" aria-labelledby="dropdownmenubtn">
<h6 class="dropdown-header"><%= current_user.username %></h6>
<div class="dropdown-divider"></div>
<%= link_to 'Account Settings', edit_user_registration_path, class: 'dropdown-item' %>
<%= link_to 'Help', user_help_index_path, class: 'dropdown-item' %>
<div class="dropdown-divider"></div>
<%= link_to 'Logout', destroy_user_session_path, class: 'dropdown-item', method: :delete %>
</div>
<% end %>
</div>
</li>
</ul>
</div>
</nav>
<script type="text/javascript">
$(document).on('turbolinks:load', function() {
$('.dropdown-toggle').dropdown()
});
</script>
application.html.erb
<body>
<% if user_signed_in? %>
<%= render 'nav_partials/user_navbar' %>
<% elsif admin_signed_in? %>
<%= render 'nav_partials/admin_navbar' %>
<% else %>
<%= render 'nav_partials/navbar' %>
<% end %>
<%= yield %>
</body>
notifications_controller.rb
module Notifications
class NotificationsController < Notifications::ApplicationController
def index
@notifications = notifications.includes(:actor).order('id desc').page(params[:page])
unread_ids = @notifications.reject(&:read?).select(&:id)
Notification.read!(unread_ids)
@notification_groups = @notifications.group_by { |note| note.created_at.to_date }
end
def clean
notifications.delete_all
redirect_to notifications_path
end
private
def notifications
raise "You need reqiure user login for /notifications page." unless current_user
Notification.where(user_id: current_user.id)
end
end
end
Benachrichtigungen Index
<div class="notifications row">
<div class="heading clearfix">
<%= t('notifications.all_notifications') %>
<span class="pull-xs-right">
<%= link_to t('notifications.clean_all'), notifications.clean_notifications_path, class: 'btn btn-sm btn-secondary', method: 'delete' %>
</span>
</div>
<div class="list">
<% if @notifications.blank? %>
<div class="no-records"><%= t('notifications.no_records') %></div>
<% else %>
<% @notification_groups.each do |group, notifications| %>
<div class="notification-group">
<div class="group-title"><%= group %></div>
<%= render notifications %>
</div>
<% end %>
<% end %>
</div>
<%= paginate @notifications %>
</div>
_notification.html.erb
<%= cache(['notifications', Notifications::VERSION, notification]) do %>
<div id="notification-<%= notification.id %>"
data-id="<%= notification.id %>"
class="media notification notification-<%= notification.notify_type %><%= ' unread' unless notification.read? %>">
<div class="media-left">
<% if notification.actor_profile_url && notification.actor_avatar_url %>
<%= link_to image_tag(notification.actor_avatar_url), notification.actor_profile_url, title: notification.actor_name, class: 'user-avatar' %>
<% end %>
</div>
<div class="media-body">
<%= render partial: "/notifications/#{notification.notify_type}", locals: { notification: notification } %>
</div>
<div class="media-right">
<%= l notification.created_at, format: :short %>
</div>
</div>
<% end %>
Benachrichtigung _follow.html.erb
<div class="media-heading">
<%= link_to notification.actor.username, notification.actor %> just followed you.
</div>
routes.rb
Rails.application.routes.draw do
mount Notifications::Engine => "/notifications"
mount Payola::Engine => '/payola', as: :payola
mount CountryStateSelect::Rails::Engine, at: "/"
devise_for :admins
devise_for :users
namespace :api do
scope :v1 do
mount_devise_token_auth_for 'User', at: 'user_auth'
end
end
devise_scope :user do
put 'user_change_plan', :to => 'users/registrations#user_change_plan'
put 'user_update_credit_card', :to => 'users/registrations#user_update_credit_card'
authenticated do
root to: 'user_dashboard#index', as: 'authenticated_user_root'
end
unauthenticated do
root to: 'home#index', as: 'unauthenticated_user_root'
end
end
end
devise_scope :admin do
authenticated do
root to: 'admin_dashboard#admin', as: 'authenticated_admin_root'
end
unauthenticated do
root to: 'home#index', as: 'unauthenticated_admin_root'
end
end
controller :home do
get :index, to: 'home#index', as: 'home', :path => 'home'
get :login_portal, to: 'home#login_portal', as: 'login_portal', :path => 'login_portal'
get :signup_portal, to: 'home#signup_portal', as: 'signup_portal', :path => 'signup_portal'
end
resources :user_dashboard, as: 'dashboard', :only => [:index, :show]
resources :comments
resources :posts do
member do
post :share
put 'like', to: 'posts#like'
get 'like', to: 'posts#like'
end
end
resources :users, only: [:show, :index, :update], path: 'u' do
get 'users/:username' => 'users#show'
patch 'users/:username', to: 'users#update'
resources :follows, :only => [:create, :destroy]
end
controller :favorites do
get 'favorites/index'
end
resource :user_profile, :only => [:edit, :update], path: 'profile'
root 'home#index'
end
Ich habe versucht, das Benachrichtigungsmodul einzuschließen, anstatt den Controller darin zu verpacken. Es funktioniert nicht so gut.
500 Internal Server Error If you are the administrator of this website, then please read this web application's log file and/or the web server's log file to find out what went wrong.
Der Fehler wird nicht definiert lokale Variable oder Methode 'dashboard_index_path‘ aber Sie haben nicht Ihre Wege gezeigt oder Routen oder Ergebnis von Rake-Routen. Die einzige Route, die Sie anzeigen, ist User_Dashboard nicht Dashboards – jamesc