Format of a string, array or hash

Hello there,
I do not know if my topic is right so I’ll explain the problem :

I have a Project model :

class Project < ActiveRecord::Base
has_and_belongs_to_many :services
end

In my views. I would like to list the services in the title of the page.

I did :
<% for service in @project.services %-><%= service.name_fr.downcase -%>,
<% end -%>.

The problem is with the listing itself, it puts this :
{Project.name} required {service.name1}, {service.name2},
{service.name3},.

There is a problem with the last comma. It looks awful from a web
developer view.

I would like :
{Project.name} required {service.name1}, {service.name2} and
{service.name3}.

Notice the attribute «and» and «dot» at the end

How do you call that thing I am looking for?
Is there a way to do it like the second exemple?

Thx a lot for your time and help.

Hugues

On Sun, Sep 6, 2009 at 3:33 PM, Hugues
Brunelle[email protected] wrote:

I would like :
{Project.name} required {service.name1}, {service.name2} and
{service.name3}.

Something like this should work:

@project.services.collect {|service| service.name}.join(", ").gsub(/,
([A-Za-z]+)$/,’ and \1.')

:: though you might need to tweak that regex, depending on what’s
in a service name…

HTH,

Hassan S. ------------------------ [email protected]
twitter: @hassan

@project.services.collect{|s| s.name}.to_sentence

On Sep 6, 3:33 pm, Hugues B. [email protected]

On Sun, Sep 6, 2009 at 5:47 PM, Eric[email protected] wrote:

@project.services.collect{|s| s.name}.to_sentence

Sweet, didn’t know that one. Let’s add the period, though:

@project.services.collect{|s| s.name}.to_sentence.concat(“.”)

Et voila, another good day’s work :slight_smile:


Hassan S. ------------------------ [email protected]
twitter: @hassan

Hello Hassan and Eric,
Outstanding! Thanks a lot, It works perfectly.

Hugues