Ordering column "name" in the List view

0 views
Skip to first unread message

ebrad

unread,
Feb 11, 2007, 6:02:46 PM2/11/07
to Ruby on Rails: Talk, nisgu...@yahoo.com
Hello,
I am very new to RoR and am learning at a fairly good pace, but a
seemingly simple task is leaving me stuck. I have a DB table called
'workers' and fields for 'first_name' and 'last_name' need to be
combined in the 'list' view and shown in order of last name. The code
I have below will render the name as "Last, First". How can I order
the table by the name column when it is a combination of 2 fields?

--thanks

<table class="list" width="90%">
<tr>
<th>Name</th>
<th>Email</th>
<th>Phone Number #1</th>
<th>Phone Number #2</th>
<th>Options</th>
</tr>
<% for worker in @workers %>
<% row_color = cycle("F8F8F8", "ffffff")%>
<tr style="background: #<%= row_color %>;">
<td><%= link_to %Q{ #{worker.last_name},
#{worker.first_name}}, :action => 'show', :id => worker %></td>
<td><%= mail_to worker.email, worker.email, :subject => "This is
an example email", :body => "This is the body of the message." %></
td>
<td><%= worker.telephone_1 %></td>
<td><%= worker.telephone_2 %></td>
<td><span class="smaller"><%= link_to 'Edit', :action =>
'edit', :id => worker %>
<%= link_to 'Delete', { :action => 'destroy', :id =>
worker }, :confirm => 'Are you sure?', :post => true %></span></td>
</tr>
<% end %>
</table>

Richard

unread,
Feb 11, 2007, 6:43:11 PM2/11/07
to Ruby on Rails: Talk
Hi,

I'm pretty new to RoR, too. But for what it's worth, I think you need
to look at your controller which populates your @workers collection
and add an :order expression, something like:

find(:all, order="name")

If nothing else, look up "order" in a Rails book.

HTH,
Richard

Alex Wayne

unread,
Feb 11, 2007, 7:20:38 PM2/11/07
to rubyonra...@googlegroups.com
Richard wrote:
> Hi,
>
> I'm pretty new to RoR, too. But for what it's worth, I think you need
> to look at your controller which populates your @workers collection
> and add an :order expression, something like:
>
> find(:all, order="name")
>
> If nothing else, look up "order" in a Rails book.
>
> HTH,
> Richard

Right idea. You can pass an :order parameter to Model.find method that
is basically an SQL fragment for setting the order of the results.

You should be fetching these workers in your controller, so change that
line of code to something like:

@workers = Worker.find(:all, :order => 'last_name, first_name')

Which would generate SQL like:

SELECT * FROM workers ORDER BY last_name, first_name

This way last_name is the primary sort, and first_name is the secondary
sort in case of ties.

--
Posted via http://www.ruby-forum.com/.

Richard

unread,
Feb 21, 2007, 5:14:01 PM2/21/07
to Ruby on Rails: Talk
Hi Wayne,

> @workers = Worker.find(:all, :order => 'last_name, first_name')

Nice job. But do you know where there's an example of this where the
app toggles between ASC and DESC when the column-name is clicked?

I got some suggestions about this a few months ago but never got it
working right. I'd like to find an "applet" on the Web or in a book
that demonstrates this.

Regards,
Richard

On Feb 11, 7:20 pm, Alex Wayne <rails-mailing-l...@andreas-s.net>
wrote:

jko170

unread,
Mar 4, 2007, 5:37:38 PM3/4/07
to Ruby on Rails: Talk

Richard

unread,
Mar 15, 2007, 2:38:06 AM3/15/07
to Ruby on Rails: Talk
Hi,

Thanks for that GREAT article. Of course, it's all JavaScript rather
than Ruby/Rails. But it works nicely and is designed beautifully, so
it'll be a great education for me to translate it to RoR with minimal
JavaScript.

Best wishes,
Richard

On Mar 4, 6:37 pm, "jko170" <jko...@gmail.com> wrote:
> Try this.http://www.kryogenix.org/code/browser/sorttable/

ebrad

unread,
Mar 21, 2007, 1:22:55 PM3/21/07
to Ruby on Rails: Talk
I ended up using that too. It's a great tool!

On Mar 15, 2:38 am, "Richard"

> > Try this.http://www.kryogenix.org/code/browser/sorttable/- Hide quoted text -
>
> - Show quoted text -

ebrad

unread,
Mar 21, 2007, 1:27:29 PM3/21/07
to Ruby on Rails: Talk
I forgot to thank you for this. It was helpful!

On Feb 11, 8:20 pm, Alex Wayne <rails-mailing-l...@andreas-s.net>
wrote:

Reply all
Reply to author
Forward
0 new messages