Sorting in ruby

I am new in ruby.I want to know how sorting can be done in ruby based
on some fields like customer name,location etc.what i meant is i have
to sort the table based on some fields.how can i.?Can anybody help me.

On Jun 30, 7:23 am, Seb [email protected] wrote:

I am new in ruby.I want to know how sorting can be done in ruby based
on some fields like customer name,location etc.what i meant is i have
to sort the table based on some fields.how can i.?Can anybody help me.

I’ll assume you’re asking about sorting models in Rails? Of course
you can, and I’ll give you an example.

(But good etiquette on this list (and any other) is to give more
details about what you’re doing, and what you’ve tried so far, so that
it’s evident you’ve tried something first. Please think about that
for next time.)

In any event, here’s how you typically select all your Customers
sorted by name (I’m assuming you have a model named ‘Customer’ with an
attribute called ‘name’):

Customer.find :all, :order => :name # orders by name

Also, if you haven’t already, I’d suggest you start with a good Rails
primer like Agile Web D. with Rails, or look for the highest-
rated Rails books on Amazon. Once you spend a little time with the
basics, I think you’ll really enjoy using Rails.

Jeff

www.purpleworkshops.com

Note Jeff’s way is better, sometimes you will need to use this way as
well:

@collection = Model.find(:all) (or whatever)
@collection2 = Model.find(:all) or whatever
@collection = [@collection, @collection2].flatten

@collection.uniq! #which removes duplicates using the @collection
array

@collection.sort! {|a, b| a.name <=> b.name}

This is helpful when you are making a larger collection out of two
smaller ones and couldn’t get the correct .find statement. But go
with Jeff’s way if at all possible.

.now i have another problem .i want to sort my table based on customer
name in my project listing.my customer name is in customer table not
in my project table.Im my project table i have customer_id .now i’m
only able to sort it based on customer_id.but i want to sort based on
customer name.
in my index file i hav
<%= link_to “Customer” ,
:action => ‘sort’,
:identity => ‘3’
in my controller i hav
def sort
id = params[:identity]
if id == ‘1’
@projects = Project.find :all, :order => :customer_id
its working fine.but i want to sort it based on custmer name.can
anybody help me.

@projects = Project.find :all, :order => “customers.name”, :include
=> :customer

the include will make this a “eager loading”, where projects &
customers are joined
Note the “customers.name” which is the table name and column name
as in the database (so plural, not singular for customers)

thanx…thorsten…now its working…

now i have another problem…i want too use some conditions with
sorting…tried to add. but not working…
in my index file i hav
<%= link_to “Customer” ,
:action => ‘sort’,
:identity => ‘3’%>
in my controller i hav
def sort
id = params[:identity]
if id == ‘1’
@projects = Project.find (:all, :order => “customers.name”, :include
=> :customer)
i want to add this query…
@projects = Project.find_by_sql [“SELECT * FROM projects p,
memberships m WHERE p.id = m.project_id AND m.user_id =?”, mem_id]
along with the previuos sorting…That’s i want to display the fields
which should satisfy this condition along with sorting …how can i?

can you explain it a bit more…