Forum: Ruby on Rails Newbie... Layouts and how to create universal header through

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
AbsolutZero (Guest)
on 2007-04-02 01:09
(Received via mailing list)
I have a simple question that I'm sure will be painful to answer for
some of you experts, but I thank you for bearing with me...

I want a simple 5-page website. I have a custom header consisting of a
simple banner and horizontal navbar underneath it. I'd like this to
stay the same through every page. Now some of my pages are interactive
with the user like shopping carts etc, but some are static, like a
current news section. I made a controller for each page, so that each
page would get a View associated with it. The way I have my pages
written now, is that the code for the banner and navbar appear on the
top of each individual page.rhtml in the /views/layouts section, and
then each page has its individual content on its respective
index.html.

The main problem I see, is that if that header changes, I have to go
into each individual layout and change it, and I know thats definitely
not the way to do it, but I can't figure out how to render that code
at the top of each layout...

Any help is greatly appreciated.

Thanks.

-Dan
Conrad T. (Guest)
on 2007-04-02 02:58
(Received via mailing list)
Hey AbsoluteZero, you can do the following:

a)  create a partial for your header (e.g.
app/views/shared/_header.rhtml )
b)  create a partial for your nav bar (e.g.
app/views/shared/_nav_bar.rhtml )
c)  create a partial for your footer (e.g.
app/views/shared/_footer.rhtml )
d)  setup your layout app/views/layouts/application.rhtml

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitiona...
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"
/>
<title>Untitled Document</title>
<%= javascript_include_tag :defaults %>
</head>

<body>

<%= render :partial => 'shared/header' %>
<%= render :partial => 'shared/nav_bar' %>

<%= yield :layout %>

<%= render :partial => 'shared/footer' %>

</body>
</html>


Good luck,

-Conrad
AbsolutZero (Guest)
on 2007-04-04 00:55
(Received via mailing list)
Thank you so much, thats exactly what I was looking for!
reed (Guest)
on 2007-04-04 01:10
(Received via mailing list)
For a quick screencast tutorial on how layouts are selected see the
"All About Layouts" at http://www.railscasts.com/
This topic is locked and can not be replied to.