I'm dynamically generating menu options based on the currently logged
in user: current_user.
My menus are setup on the applicatin.rhtml file. The current_user is
defined in the application controller. But, attempting to assign it a
value while in the application controller results in an 'undefined
method' error.
ApplicationController ....
def current_user
@cu = ::User.find(session[:rbac_user_id]) || "not logged in"
end
This should be
<% if @cu && @cu.has_role?("Admin") %>
menu one
menu two
<%end%>
That way it makes sure there is a user, then checks their role.
You need to use instance variables to get data to your views. You can't call a method in your controller from the view.
Call current_user in your function before the page is rendered.
I'm working on a role-based project right now also, so if you find a better way I'd like to hear about it.
Jason
Larry Kelly wrote:
Definitely, for whole pages that are role-based. But for conditionally displaying parts of a menu, what's the best route?
Putting an if directly in the view is what I've been doing, but it seems that there should be a more elegant approach.
Jason
Matthew Isleb wrote: