where to put views for application controller?


im pretty much a rails newbie, but i was wondering where the rhtml
files go for the application controller?

i.e. if i had some logic that needed to be performed on the document
root of my website: (i.e. http://www.mysite.com)
where would i put this rhtml file.

I tried putting it in the public directory, but that failed...and the
content inside the <% %> takes weren't evaluated...

also, just entering http://www.mysite.com didn't automatically render
index.rhtml, but rather gave me a 404 error.


In your config directory is a routes.rb file which rails uses to understand which actions in your app to call in response to the url requested.

Here is what it looks like:

Routes.draw do |map|

The priority is based upon order of creation: first created -> highest priority.

Sample of regular route:

map.connect ‘products/:id’, :controller => ‘catalog’, :action => ‘view’

Keep in mind you can assign values other than :controller and :action

Sample of named route:

map.purchase ‘products/:id/purchase’, :controller => ‘catalog’, :action => ‘purchase’

This route can be invoked with purchase_url(:id => product.id)

You can have the root of your site routed by hooking up ‘’

– just remember to delete public/index.html.

map.connect ‘’, :controller => “welcome”

Allow downloading Web Service WSDL as a file with an extension

instead of a file named 'wsdl

map.connect ‘:controller/service.wsdl’, :action => ‘wsdl’

Install the default route as the lowest priority.

map.connect ‘:controller/:action/:id.:format’
map.connect ‘:controller/:action/:id’

As you can see the first uncommented line is
map.connect ‘’, :controller => “welcome”

What this tells rails is that when the url is only http://www.mysite.com it should route that request to the welcome controller. If no action is specified rails will default to calling the index action in that controller. The index action will look for an index.rhtml, parse the <% %> into the appropriate html and deliver a html file to be served to the browser.

The last uncommented line which looks like this
map.connect ‘:controller/:action/:id’

is the default decoding of urls. the routing expects a url that looks like this for example:
This route mapping “decodes” the url as
:controller => ‘welcome’
:action => ‘show’
:id => 5

Hope this helps.


thanks to both of you...thats clears things up a lot, i will start
playing with it first chance i get.

To delve a bit deeper about the structure of a rails app, is it bad
design to have only an application.rb controller? and so other

Let me explain a bit more, basically, the site i am working on has a
lot of cgi script (thats the main chunk of the features this site
promotes), and I have the task of adding user accounts to this site
for a small additional feature. basically, at this point in time, it
seems like this will be the only feature rails will be in charge
of....so i am left wondering whats the point of putting all of my
logic in an AccountController, and having an empty
Application.rb...maybe it would make the most sense to just have
everything inside the application controller, and shorten my urls at
the same time (i.e. http://www.mysite.com/login vs. http://www.mysite.com/account/login).

This first hit me when i was adding the rails code to existing html
pages, i found that i needed to add a '../' before the images
directory in all of my <img> tags because of the fact that i was up a
level (i.e. in the account controller)