Newbie : homepage without referencing a controller

I’m racking my brain trying to get all this straight in my head.

What do the settings need to be in order to show a layout on the
landing page without referencing a controller.
All I want to do is hit www.mypage.com and display a layout view.
right now it’s pure html - no data. Everything I read shows
www.mypage.com/somecontroller

What are all the settings?

Thanks for your help
Keith

You’re kinda garbling your jargon here a bit, which is okay.

When you hit http://someurl/ rails looks in the public folder for
index.html. If it finds it, it renders it. If it doesn’t, it looks in
the routes.rb file (in the config folder) for a route that is hooked
up to a blank string (ie the root of the site). If it find that, it
grabs that route, runs the action at that route, and then renders the
layout template associated with that action (if there is one - it’s
either specified on the controller at the top with the layout method,
or by default it will render views inside a layout with the same name
as the controller, if it finds one and the layout is not specified in
the controller), inserting in the results of the rendered view file
template into that layout for each time it finds <%= yield %> in the
layout.

If it can’t find the view file, it will complain.

I hope this helps.

Julian.

Learn Ruby on Rails! Check out the FREE VIDS (for a limited time)
VIDEO #4 coming soon!
http://sensei.zenunit.com/

yeah to setup the default page
delete index.html from the public directory
go into config/routes.rb
add a ‘default’ action

map.connect ‘/’,
:controller => ‘store’,
:action => ‘index’

Though I’m not sure about all of it :slight_smile:
-R

ok here is what I did - I think I’m close

deleted index.html
Added to routes.rb
map.connect ‘/’,
:controller => ‘main’,
:action => ‘index’

I created a controller called ‘main’ with the idea being I can route
pages like contact or about through.

In the main controller I have
class MainController < ApplicationController
layout(main, conditions = {}, auto = false)
end

when I run the app I get the error:
undefined local variable or method `main’ for MainController:Class

help?

On Apr 15, 1:59 am, Roger P. [email protected]

kschu wrote:

ok here is what I did - I think I’m close

deleted index.html
Added to routes.rb
map.connect ‘/’,
:controller => ‘main’,
:action => ‘index’

try using map.home instead of map.connect [?]

try using map.home instead of map.connect [?]

something like this?
map.home ‘’, :controller => ‘home’, :action => ‘index’

Same error

On Apr 15, 9:47 am, Roger P. [email protected]

You shouldn’t need all of that in your Main controller.

def index

will render app/views/main/index.html.erb

end

If you have a layout that you don’t want to render, you can specify
render :layout => false.

-Kyle

On Apr 15, 9:47 am, Roger P. [email protected]

That did it. Thanks guys!

Did you remove the line that read:

layout(main, conditions = {}, auto = false)

?

If you have this in your routes…

map.connect ‘/’, :controller => ‘store’, :action => ‘index’
(not sure about map.home automatically routing ‘/’)

…and this in your controller…

class MainController < ApplicationController
def index
# will render app/views/main/index.html.erb
end
end

…and if you have the file app/views/main/index.html.erb, you should
be getting something. If not, please paste the whole error. Also,
check your logs to see if your request for http://www.myapp.com/ (or
perhaps http://localhost:3000/) is correctly calling the :controller
=> ‘main’, :action => ‘index’.

-Kyle