Contents 

Ruby on Rails:
Table of Contents
Preface
Zero to Sixty: Introducing Rails
1.1. Rails Strengths
1.2. Putting Rails into Action
1.3. Organization
1.4. The Web Server
1.5. Creating a Controller
1.6. Building a View
1.7. Tying the Controller to the View
1.8. Under the Hood
1.9. What's Next?
Active Record Basics
2.1. Active Record Basics
2.2. Introducing Photo Share
2.3. Schema Migrations
2.4. Basic Active Record Classes
2.5. Attributes
2.6. Complex Classes
2.7. Behavior
2.8. Moving Forward
Active Record Relationships
3.1. belongs_to
3.2. has_many
3.3. has_one
3.4. What You Haven't Seen
3.5. Looking Ahead
Scaffolding
4.1. Using the Scaffold Method
4.2. Replacing Scaffolding
4.3. Generating Scaffolding Code
4.4. Moving Forward
Extending Views
5.1. The Big Picture
5.2. Seeing Real Photos
5.3. View Templates
5.4. Setting the Default Root
5.5. Stylesheets
5.6. Hierarchical Categories
5.7. Styling the Slideshows
Ajax
6.1. How Rails Implements Ajax
6.2. Playing a Slideshow
6.3. Using Drag-and-Drop to Reorder Slides
6.4. Drag and Drop Everything (Almost Everything)
6.5. Filtering by Category
Testing
7.1. Background
7.2. Ruby's Test::Unit
7.3. Testing in Rails
7.4. Wrapping Up
Installing Rails
1.1. Windows
2.1. OS X
3.1. Linux
Quick Reference
5.1. General
5.2. Testing
5.3. RJS (Ruby JavaScript)
5.4. Active Record
5.5. Controllers
5.6. Views
5.7. Ajax
5.8. Configuring Your Application
About the Authors
Colophon
Index
A
B
C
D
E
F
G
H
I
J
L
M
N
O
P
R
S
T
U
V
W
X
Y
Z

Ruby on Rails manual

Prev Page Next Page
Previous Page
Next Page

5.5. Stylesheets

Currently, to change the styling of the application, you have to change each individual HTML element. If you've used much HTML, you know that our current design will make design work tedious and error prone. Before we get too far along beautifying our Photo Share application, we should start using stylesheets to keep all styling in one place. First, we'll create an overall application stylesheet where we will move the styles for our navigation bar and set a background color for all pages. Then we'll create a special stylesheet for specifying styles for our photos and thumbnails.

Rails creates a scaffold.css file that contains the basic styling used by generated scaffolding code. Let's use this as a starting point for our application's overall stylesheet. Copy the file public/stylesheets/scaffold.css and name this copy public/stylesheets/application.css .

First, change the background color to a very light gray by adding background: #eee; to the starting body, p, ol, ul, td {. Then add a .navbar to style the navigation bar. When you're done, the beginning of application.css should look like this:

body { background-color: #fff; color: #333; }

body, p, ol, ul, td {
  font-family: verdana, arial, helvetica, sans-serif;
  font-size:   13px;
  line-height: 18px;
  background: #eee;
}

.navbar {
  padding: 7px;
  padding-bottom: 12px;
  margin-bottom: 20px;
  background-color: LightBlue;
}

pre {

Now you need to edit the standard layout file (standard.rhtml ) and replace the styling information for the navigation bar with a reference to the stylesheet. Edit app/views/layouts/standard.rhtml to look like this:

<html>
<head>
  <title>Photo Share</title>
  <%= stylesheet_link_tag 
 'application' %>
</head>
<body>
  <div>
  <p class="navbar">
    &nbsp;
    <%= link_to 'Photos', :controller => 'photos', :action => 'list' %>
    &nbsp;
    <%= link_to 'Categories', :controller => 'categories', :action => 'list' %>
    &nbsp;
    <%= link_to 'Slideshows', :controller => 'slideshows', :action => 'list' %>
  </p>
  </div>

  <p style="color: green"><%= flash[:notice] %></p>

  <%= @content_for_layout %>

</body>
</html>

The two changes are highlighted in bold. stylesheet_link_tag creates a link to the application.css file; adding class="navbar" to the paragraph tag displays it with our .navbar styles.

Let's see how this looks. If you browse to http://127.0.0.1:3000/; it should look like "#rubyrails-chp-5-fig-5">Figure 5-5.

Now let's style the photo thumbnails to have a visual frame. Create the file public/stylesheets/photos.css containing this:

#thumbnail {
   padding: 1em;
   background: #ddd;
   border: thin solid #333;
}

Figure 5-5. Using a stylesheet

Edit app/views/layouts/standard.rhtml and add <%= stylesheet_link_tag 'photos' %> right after the existing stylesheet tag. Then edit app/views/photos/list.rhtml and add an :id => 'thumbnail' attribute to the image tag. That part of list.rhtml should look like this:

<%= link_to(image_tag("photos/#{photo.thumbnail}",
                    :size => '75x56',
                    :border => 1,
                    :id => 'thumbnail'),
          url_for(:action => 'show', :id => photo)
         )
%>

Browse to http://127.0.0.1:3000/ and it should look like "#rubyrails-chp-5-fig-6">Figure 5-6.

Figure 5-6. Using a stylesheet to display borders on the pictures

Things are starting to look pretty good. "#rubyrails-chp-5-fn-4">[*] Now we need to assign photos to categories. Also, we must be able to create and edit categories.

[*] The borders will look a little different in Microsoft's Internet Explorer (as opposed to Firefox, shown here), due to differences in CSS handling.


Previous Page
Next Page