読者です 読者をやめる 読者になる 読者になる

Rails Webook

自社のECを開発している会社で働いています。Rails情報やサービスを成長させる方法を書いていきます

Railsのテキスト、数値、日付/日時関連のフォーマットヘルパー

Rails View リファレンス

RailsのViewでよく使う日付、数値、テキストのフォーマットヘルパーのリファレンスです。
フォーマットヘルパーは、日付/日時、数値、テキストの「表示形式を指定」できます。

動作確認

  • Rails 4.1

テキスト関連

# デバッグ情報を表示する
<%= debug(params) %> #=> リクエストパラメータの中身を表示
<%= debug(cookies) %> #=> クッキーの中身を表示

# 改行やスペースをそのままの形で表示する。テキストエリアの表示などで使う
<%= simple_format("<p>ABC<br>ZYX</p>") %>
#=> <p>ABC<br>ZYX</p>

# 文字列内の「指定文字」にタグを作成する(デフォルト:mark)
<%= highlight( "これはテスト用の文字列です。", "テスト") %>
#=> これは<mark>テスト</mark>用の文字列です。
<%= highlight('これはテスト用の文字列です。', ['テスト', '文字列'], highlighter: '<em>\1</em>') %>
#=> これは<em>テスト</em>用の<em>文字列</em>です。

# lengthで指定した文字数以上ある場合は、"..."で文字列を省略して表示する。
#(lengthは、...の数も含む)
<%= truncate('これはテスト用の文字列です。', length: 8) %>
#=> これはテス...
<%= truncate("これはテスト用文字列です。", length: 8) { link_to "続きを読む", "#" } %>
#=> これはテス...<a href="#">続きを読む</a>

# 文字列内の「指定文字」からradius文だけ表示する
<%= excerpt( "これはテスト用の文字列です。", "テスト", radius: 2) %>
#=>...れはテスト用の...

# 日本語では関係ないですが、名詞の単数/複数を識別して表示する
<%= pluralize(1, 'person') %> # => 1 person
<%= pluralize(2, 'person') %> # => 2 people
# 日本語でちょっと実験してみましたが変な風に表示されてしまいます。
# 多分、単数系複数形の辞書があり、そこでマッチしなかったら"s"をつけるとかのロジックなんだと思います。
<%= pluralize(1, '') %> #=> 1 人
<%= pluralize(2, '') %> #=> 2 人s

数値関連

# 通貨形式で表示する
<%= number_to_currency( 1234.56 ) %> #=> $1,234.56 (ロケールは en)
<%= number_to_currency( 1234.56, unit: "¥", precision: 0 ) %> #=> ¥1,235

# バイトで表示する
<%= number_to_human_size( 1200 ) %> #=> 1.17 KB

# パーセントで表示する
<%= number_to_percentage( 66.666666, precision: 1 ) %> #=> 66.7%

# 3桁毎に区切り文字(デフォルトは ,)を追加して表示する
<%= number_with_delimiter( 1234567890 ) %> #=> 1,234,567,890
<%= number_with_delimiter( 1234567890, delimiter: "_" ) %> #=> 1_234_567_890

# 表示桁数を指定して表示する(四捨五入される)
<%= number_with_precision( 12.3456, precision: 2 ) %> #=> 12.35

日付/日時関連

# 現在日時から引数で指定した日時までのおよその日付を表示
<%= time_ago_in_words(3.minutes.from_now)  %>   # => 3 minutes
<%= time_ago_in_words(3.minutes.ago)  %>            # => 3 minutes