Ordering column "name" in the List view

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

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

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

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.

Hi Alex,

On Feb. 11, you posted the reply “…Right idea. … @workers =
Worker.find(:all, :order => ‘last_name, first_name’)” on the Google
Groups’ thread
http://groups.google.com/group/rubyonrails-talk/browse_frm/thread/cc00dc54ec438f28.

You probably never noticed that I posted a follow-up question ten days
later, which is repeated below with the hope that you might have an
answer:

@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 received some suggestions about this a few months ago but never got
it
working right.

Do you have any idea where I can find an “applet” on the Web or in a
book
that demonstrates this.

Best wishes,
Richard

On Feb 11, 7:20 pm, Alex W. [email protected]

Try this. sorttable: Make all your tables sortable

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 W. [email protected]

I ended up using that too. It’s a great tool!

On Mar 15, 2:38 am, “Richard”

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

I forgot to thank you for this. It was helpful!

On Feb 11, 8:20 pm, Alex W. [email protected]