Как мне создать список на английском языке (name1, name2 и AND name3) в Ruby on Rails? - PullRequest
0 голосов
/ 05 мая 2010

Вполне возможно, что может быть магия рельсов, которую я пропустил, но я предполагаю, что она будет в Ruby.

У меня есть модель с названием Company, у которой есть контакты.

Предположим, что у компании есть контакт 1, контакт 2, контакт 3 и контакт 4.

Когда я создаю текстовый журнал для каждого Контакта, я хочу вывести следующее (где Контакт = Контакт 1)

"Привет, контакт 1, Я также пишу в контакт 2, контакт 3 и контакт 4. "

Таким образом, он должен извлечь Контакт в приветствии и затем перечислить их, вставив «и» перед последним Контактом в списке.

Редактировать

Теперь у меня есть следующее:

Это в contacts_controller.rb

  def full_name
   [self.first_name, self.last_name].compact.join(" ")
  end

в contact_letters_controllers.rb (contact_letters - это выполненные контакты с буквами)

  def new

    @contact_letter = ContactLetter.new
    @contact_letter.contact_id = params[:contact]
    @contact_letter.letter_id = params[:letter]

    @contact = Contact.find(params[:contact])
    @company = Company.find(@contact.company_id)

    contacts = @company.contacts.collect(&:full_name)

    contacts.each do |contact|
       @colleagues = contacts.reject{ |c| c==@contact.full_name }
    end

    @letter = Letter.find(@contact_letter.letter_id)

    @letter.body.gsub!("{FirstName}", @contact.first_name)
    @letter.body.gsub!("{Company}", @contact.company_name) 
    @letter.body.gsub!("{Colleagues}", @colleagues.to_sentence)

    @contact_letter.body = @letter.body
    @contact_letter.status = "sent"

  end 

1 Ответ

3 голосов
/ 05 мая 2010

Я считаю, to_sentence - это то, что вы ищете.

Вы можете попробовать что-то вроде следующего:

contacts = Company.contacts.collect(&:name)

contacts.each do |contact|
   other_contacts = contacts.reject{ |c| c==contact }
   p "Hi, #{contact}, I am also writing to #{other_contacts.to_sentence}"
end

Я не тестировал этот код, поэтому прости меня, если он не работает.

Редактировать

Этот метод возвращает полное имя контакта. Если у вас также есть атрибут middle_name, вы можете добавить его в массив. Этот метод все еще будет работать, если какой-либо из атрибутов будет nil.

def full_name
   [self.first_name, self.last_name].compact.join(" ")
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...