Railsのフォーマットヘルパー抜粋

## 数値 (NumberHelper)

* 桁区切りフォーマットへ変換

    ```rb:ruby
# number_with_delimiter(number, options = {})
number_with_delimiter 123456789 #=> "123,456,789"
number_with_delimiter 123456789, delimiter: "-" #=> "123-456-789"
```

* 指定の桁で丸めたフォーマットへ変換

    ```rb:ruby
# number_with_precision(number, options = {})
number_with_precision 123456789 #=> "123456789.000"
number_with_precision 123.456789 #=> "123.457"
number_with_precision 123.456789, precision:4 #=> "123.4568"
number_with_precision 123.456789, precision:4, significant: true #=> "123.5"
```

* パーセントフォーマットへ変換

    ```rb:ruby
# number_to_percentage(number, options = {})
number_to_percentage 1.0/4.0 * 100 #=> "25.000%"
number_to_percentage 1.0/4.0 * 100, precision: 0  #=> "25%"
```

* 通貨フォーマットへ変換

    ```rb:ruby
# number_to_currency(number, options = {})
number_to_currency 123456789 #=> "$123,456,789.00"
number_to_currency 123456789, unit: "ドル", format: "%n%u", precision: 0, delimiter: nil #=> "123456789ドル"
"#{123456789}ドル" #=> "123456789ドル"
```

* 単位フォーマットへ変換

    ```rb:ruby
# number_to_human(number, options = {})
number_to_human 123456789 #=> "123 Million"
number_to_human 123456789, units: { million: "M"}, precision: 4 #=> "123.5 M"
```


* バイト単位フォーマットへ変換

    ```rb:ruby
# number_to_human_size(number, options = {})
number_to_human_size 123456789 #=> "118 MB"
number_to_human_size 1000 #=> "1000 Bytes"
number_to_human_size 1024 #=> "1 KB"
```

* 電話番号フォーマットへ変換

    ```rb:ruby
# number_to_phone(number, options = {})
number_to_phone "0123456789" #=> "012-345-6789"
number_to_phone 123456789 #=> "12-345-6789"
number_to_phone 123456789, country_code: 81 #=> "+81-12-345-6789"
```

## 日時 (DateHelper)

* 時間の差を取得

    ```rb:ruby
# distance_of_time_in_words(from_time, to_time = 0, options = {})
distance_of_time_in_words Time.now, Time.now #=> "less than a minute"
distance_of_time_in_words Time.now, Time.now, include_seconds: true #=> "less than 5 seconds"
```

* 現在から指定時間までの時間の差を取得

    ```rb:ruby
# time_ago_in_words(from_time, options = {})
time_ago_in_words(3.minutes.ago) #=> "3 minutes"
time_ago_in_words(3.minutes.since) #=> "3 minutes"
helper.time_ago_in_words(40.seconds.since, include_seconds: true) #=> "less than a minute"
```

## テキスト (TextHelper)

* 省略フォーマットへ変換

    ```rb:ruby
# truncate(text, options = {}, &block)
truncate("長文は、全部表示するとえらいことになる", length: 10) #=> "長文は、全部表..."
truncate("長文は、全部表示するとえらいことになる", length: 10, separator: "、") #=> "長文は..."
truncate("長文は、全部表示するとえらいことになる", length: 10, separator: "、", omission: "．．．以下省略") #=> "長文は．．．以下省略"
```

* 特定の文字を順に取得

    ```rb:ruby
# cycle(first_value, *values)
cycle("group a", "group b", "group c") #=> "group a" 
cycle("group a", "group b", "group c") #=> "group b"
# current_cycle(name = "default")
current_cycle #=> "group b"
cycle("group a", "group b", "group c") #=> "group c"
cycle("group a", "group b", "group c") #=> "group a" 
# reset_cycle(name = "default")
reset_cycle
cycle("group a", "group b", "group c") #=> "group a" 
```

* HTMLタグを付与したフォーマットへ変換

    ```rb:ruby
# simple_format(text, html_options = {}, options = {})
simple_format "<blink>例</blink>" #=> "<p>例</p>"
simple_format "<blink>例</blink>", {name: "example"}, wrapper_tag: "div", sanitize: false #=> "<div name=\"example\"><blink>例</blink></div>"
```

* 特定文字数を元に改行整形したも文字列を取得

    ```rb:ruby
# word_wrap(text, options = {})
word_wrap "起 承 転 結", line_width: 3 #=> "起 承\n転 結"
word_wrap "起 承 転 結", line_width: 1 #=> "起\n承\n転\n結"
```

## rails consoleで試してみる

```rb:console
helper.number_to_currency(99999999.99) #=> "$99,999,999.99"
helper.number_to_currency(99999999.99, precision: 0) #=> "$100,000,000"
# svenfuchs/rails-i18n のja.yml を適用している場合
# precision:0, unit: 円 となる
I18n.locale= :ja
helper.number_to_currency(99999999.99) #=> "100,000,000円"
helper.number_to_currency(99999999.99, precision: 2) #=> "99,999,999.99円"
```