I meine App Ich muss Links zu Abschnitten je nach Benutzerrolle ein-/ausblenden.Rails 5: Link aus Navigation teilweise anzeigen, wenn Benutzer eine bestimmte Rolle hat
In models/roles.rb ich habe:
class Role < ApplicationRecord
belongs_to :user, optional: true
accepts_nested_attributes_for :user
enum general: { seller: 1, buyer: 2, seller_buyer: 3}, _suffix: true
enum dashboard: { denied: 0, viewer: 1, editer: 2, creater: 3, deleter: 4}, _suffix: true
In Controller/dashboards_controller.rb ich habe:
def dashboard_1
@roles = current_user.roles
if @roles.any? { |role| role.creater_dashboard? || role.deleter_dashboard? }
@creater_deleter = true
elsif @roles.any? { |role| role.viewer_dashboard? }
@viewer = true
else
redirect_to users_path
end
In Layouts/application.html.erb Ich habe dies:
<!-- Navigation -->
<%= render 'layouts/navigation' %>
und in Teil Layouts/_navigation.html.erb Ich habe dies:
<li class="<%= is_active_controller('dashboards') %>">
<%= link_to dashboard_path do %>
<i class="fa fa-th-large"></i> <span class="nav-label" data-i18n="nav.dashboard">Dashboard</span>
<% end %>
<% end %>
</li>
<li class="<%= is_active_controller('campaigns') %>">
<%= link_to campaigns_path do %>
<i class="fa fa-clipboard"></i> <span class="nav-label" data-i18n="nav.campaigns">Campaigns</span>
<% end %>
</li>
... #other links to different parts of app
Wie "Armaturenbrett" -Link in teilweise zeigen, wenn der Benutzer @creator_deleter ist? Hinweis: Ich muss jedoch den Link "Kampagnen" für alle Nutzer anzeigen. Wie ich herausgefunden habe, könnte ich AJAX von diesem Punkt an verwenden ... Vielen Dank für jede Hilfe!
Leider funktioniert nicht wie in _layouts/_navigation.html.erb_ gibt diesen Fehler: _undefined lokale Variable oder Methode 'creator_deleter'_ Es scheint, dass Instanzvariable wird auf diese Weise nicht auf Teilweise übergeben. – matiss