重载ActiveSupport的默认to_sentence行为

Pet*_*ter 2 ruby ruby-on-rails activesupport

ActiveSupport提供了很好的方法to_sentence.从而,

require 'active_support'
[1,2,3].to_sentence  # gives "1, 2, and 3"
[1,2,3].to_sentence(:last_word_connector => ' and ')  # gives "1, 2 and 3"
Run Code Online (Sandbox Code Playgroud)

你可以改变最后一个单词连接符,这是好的,因为我不想有额外的逗号.但它需要额外的文字:44个字符而不是11个字符!

问题:什么是改变的默认值,比如Ruby最方式:last_word_connector' and '

Sam*_*ron 12

好吧,它是可本地化的,所以你可以指定 '和' 的默认 'en'值support.array.last_word_connector

看到:

来自:conversion.rb

def to_sentence(options = {})
...
   default_last_word_connector = I18n.translate(:'support.array.last_word_connector', :locale => options[:locale])
...
end
Run Code Online (Sandbox Code Playgroud)

分步指南:

首先,创建一个rails项目

rails i18n

接下来,编辑您的en.yml文件:vim config/locales/en.yml

en:
  support:
    array:
      last_word_connector: " and "

最后,它有效:

 
Loading development environment (Rails 2.3.3)
>> [1,2,3].to_sentence
=> "1, 2 and 3"