I've many controllers in different namespaces. The controller_name method only returns the name of the controller, e.g. 'articles'. Is there any chance to get the full name like 'service/articles' (the articles controller is in the service namespace)?
I want do create a link to the index action of each controller via a globally used partial:
<%= link_to controller.display_name, { :controller => controller.controller_name, :action => "index"} %>
If this partial is rendered in a view in the 'users' namespace, I get an error: users/articles has no route (it should be service/articles).
The namespace property is optional and defines a namespace for a controller. Multiple controllers may be defined in the same namespace. Multiple controllers may be defined with the same name as long as they are defined in separate packages and are not defined in the same namespace.
Namespacing is a way of bundling logically related objects together. Modules serve as a convenient tool for this. This allows classes or modules with conflicting names to co-exist while avoiding collisions. Think of this as storing different files with the same names under separate directories in your filesystem.
Have you tried:
controller_path
http://api.rubyonrails.org/classes/AbstractController/Base.html#method-i-controller_path
Instead of linking to the :controller, :action syntax, can you use nested resources
routes.rb
resources :users do
resources: articles
end
in your view
= link_to 'Articles', user_article_path(current_user)
The user_article will take care of your namespaces for you.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With