On 23 November 2011 12:14, Mauro <[email protected]> wrote: > In my application_controller I have: > > before_filter :set_default_role > > layout :specify_layout > > private > def specify_layout > if @current_role == :intra_guest > "intranet" > elsif @current_role == :inter_guest > "internet" > else > #(devise_controller? || user_signed_in?) > "application" > end > end > > def set_default_role > if request.path == "/intraOp" > @current_role = :intra_guest > elsif request.path == "/interOp" > @current_role = :inter_guest > else > @current_role = current_user.try(:role) > end > end > > When I call http://mysite/intraOp....@current_role is set to > :intra_guest but if I click to a link, say http://mysite/other, the > @current_role in not :intra_guest anymore because the path is not > /intraOp and before_filter is run every time before an action. > I think the solution is to run set_default_role only one at > application start and not before every controller action. > Advices?
If you always want it :intra_guest then why have you got the logic in set_default_role why not just set it to that? You say that you want to set it once at application start, remember that the application will server multiple users one after the other without restarting, so all users would get the same value. If you are trying to do it based on which url a user goes to *first* then save the value in the session for later use by that user. Colin -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.

