Problem with <hr> placement in scaffold code


#1

I’m customizing my scaffold on a simple app by adding a little
formatting. However, the


that I put inside the table row that
displays the row gets moved outside the table and I can’t figure out
why.

Here’s the scaffold code with the
marked:

<% counter = 0 %> <% for idea in @ideas %> <% counter = counter + 1 %> <%= "
" %> <=================== <% end %>
Description Date Entered Source Tags
<%= idea.send("description")[0,145]%> <% if idea.description.length > 145 %> ... <% end %> <%= idea.send("date_entered") %> <%= idea.send("source") %> <%= idea.tag_names.join(', ') %> <%= link_to 'Show', :action => 'show', :id => idea %> <%= link_to 'Edit', :action => 'edit', :id => idea %> <%= link_to 'Destroy', { :action => 'destroy', :id => idea }, :confirm => 'Are you sure?', :method => :post %>
======================== And here's the result - notice that all the
elements have been moved completely outside the table??? ========================

Listing ideas


<======================








Description Date Entered Source Tags
========================

It’s gotta be something simple I’m overlooking, but I can’t seem to
find the problem.

thanks…jon


#2

Hi Jon,

JSeidel wrote:

I’m customizing my scaffold on a simple app by adding a little
formatting. However, the


that I put inside the table row that
displays the row gets moved outside the table and I can’t figure out
why.

Here’s the scaffold code with the


marked:

<%= “<tr id=“row-#{counter}”>
” %>

I think Rails is having a problem matching your quotes. You’re wanting
nested, and it’s seeing a series. It looks like you’ve tried to escape
the
quotes but I don’t think that’ll work here. Try…
<%= %Q{


} %>

hth,
Bill


#3

Actually, Bill, I have exactly the same problem when I simplify the
code to:


…jon


#4

My bad! I had to specify this:


to get the


to cover the entire table.

…jon


#5

On Jul 1, 2007, at 12:23 , JSeidel wrote:

My bad! I had to specify this:


to get the


to cover the entire table.

Note that if you’re using XHTML,


is invalid. Use
instead.

I’m curious why you’re using


here rather than just using CSS to
style your , , and
<td><%= idea.send("description")[0,145]%>
<% if idea.description.length > 145 %>
    ...
    <% end %>
    </td>

You can use the truncate() helper to handle shortening
idea.description rather than handling it yourself:

It’s also a good idea to use the h() helper to html-escape your strings.

<td><%= idea.send("date_entered") %></td>
<td><%= idea.send("source") %></td>

I’m not quite sure why you’re using #send here rather than just

 <td><%= h idea.date_entered %></td>
 <td><%= h idea.source %></td>

Note, I’ve again used the h() helper method.

Putting these all together, you get (untested):

elements?
is pretty much just
a style element (i.e., it doesn’t convey meaning), and it’s generally
better to separate your content (the HTML) from presentation (the CSS).

Here are some other hints you might consider:

On Jul 1, 9:18 am, JSeidel removed_email_address@domain.invalid wrote:

<% counter = counter + 1 %>

<% counter += 1 %>

(And if you’re immediately incrementing your counter, you might as
well initialize it to what you want and increment at the bottom of
the loop rather than the top.)

    <%= "<tr id=\"row-#{counter}\"><hr>" %>       

<===================

As a matter of style, I find it much harder to read tags which are
quoted. The idea of using an erb template is that you can use your
tags as tags rather than building up and printing strings, e.g.,

<%= h truncate(idea.description, 145) %>
<% counter = 1 %> <% for idea in @ideas %> <% counter += 1 %> <% end %>
Description Date Entered Source Tags
<%= h truncate(idea.description, 145) %> <%= h idea.date_entered %> <%= h idea.source %> <%= h idea.tag_names.join(', ') %> <%= link_to 'Show', :action => 'show', :id => idea %> <%= link_to 'Edit', :action => 'edit', :id => idea %> <%= link_to 'Destroy', { :action => 'destroy', :id => idea }, :confirm => 'Are you sure?', :method => :post %>

Personally, I think that’s a little easier to read, and perhaps more
idiomatic.

Hope this helps.

Michael G.
grzm seespotcode net


#6

On Jul 1, 2007, at 16:40 , Jon Seidel CMC wrote:

Michael… Thank you very much; excellent comments - I will definitely
incorporate them.

I’m glad you found them helpful. I always wonder whether or not to
comment on issues I see in code other than what the poster is
directly asking about.

Minor point: coming from Perl, I was looking for the counter++
syntax and,
failing to find that, went completely the other way forgetting the
(op)= in
my flustered state :slight_smile:

I hear you :slight_smile: My language route has been PHP to Perl to Ruby and I’m
currently studying C :slight_smile: While there are usually many different ways
to accomplish a given task, learning the idioms of a particular
language is interesting.

Michael G.
grzm seespotcode net


#7

Michael… Thank you very much; excellent comments - I will definitely
incorporate them.

Regarding use of


versus CSS - I’m building this up by stages and
adding the hr is much easier (ignoring my errors) than id’ing the
elements
and CSS’ing them, IMO. Were I to upgrade the display more fully, then I
would definitely go CSS (which I do use for much of my styling).

Minor point: coming from Perl, I was looking for the counter++ syntax
and,
failing to find that, went completely the other way forgetting the (op)=
in
my flustered state :slight_smile:

Cheers; and thanks again.

…jon