很可能有一个我错过的铁轨魔法,但我猜它会在Ruby中。
我有一个名为Company的模型,其中包含了很多联系人。
假设公司有联系人1,联系人2,联系人3和联系人4。
当我为每个联系人创建一个textblog时,我想输出以下内容(其中Contact = Contact 1)
“嗨,联系1, 我也写信给Contact 2,Contact 3和Contact 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
答案 0 :(得分:3)
我相信to_sentence
正是您所寻找的。 p>
您可以尝试以下内容:
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
我没有测试这段代码,所以请原谅我,如果这不起作用。
修改强>
此方法将返回联系人的full_name。如果您还有middle_name
属性,则可以添加数组。如果任何属性为nil
,则此方法仍然有效。
def full_name
[self.first_name, self.last_name].compact.join(" ")
end