This is exactly the approach I am using in my projects. Example controller. I really do not like the default approach where the “regular” naming scheme is broken. Thanks to that approach it router is IMHO much cleaner:
scope "/", LangustaWeb.Controllers do
pipe_through :browser
get "/", Stories, :index
get "/newest", Stories, :newest
get "/newest/:name", Stories, :newest
get "/s/:id/*rest", Stories, :show
get "/t/:tags", Stories, :for_tags
get "/u/:name", Account, :profile
get "/login", Account, :login_form
post "/login", Account, :login
scope "/" do
pipe_through :logged_in
post "/s/:story_id/vote/:vote", Votes, :story
get "/submit", Stories, :new
post "/submit", Stories, :create
delete "/logout", Account, :logout
end
end
See Mama, no Controller
repeated over and over again.
However recently I am thinking about grouping the controller, view, and templates within single “domain-oriented” directory.