using a method :layout_for_namespace I set my app's layout depending on whether I am in frontend or backend, as the backend is using an namespace "admin".
I could not find a pretty way to find out which namespace I am, the only way I found is by parsing the string from params[:controller]. Of course that's easy, seems to be fail-safe and working good. But I am just wondering if there's a better, prepared, way to do this. Does anyone know?
Currently I am just using the following method:
def is_backend_namespace?
params[:controller].index("admin/") == 0
end
Thanks in advance
Arne
You can use:
Not much more elegant, but it uses the class instead of the params hash. I am not aware of a "prepared" way to do this without some parsing.
Setting the namespace in application controller:
In Rails 6, the controller class does not seem to have a
namespace
method on it.The solution that seemed cleanest and worked for me in a view was:
controller.class.module_parent
Specifically, if your namespace is Admin:: and you wanted 'admin', you'd do:
controller.class.module_parent.to_s.downcase
Outside the controller (e.g. in the views), use controller.class.name. You can turn this into a helper method like this:
In both the controller and the views, you can parse controller_path, eg.: