Railsガイドにきちんと目を通して新しい知識を得る - Action View ヘルパー編 -

ドキュメントを読み込むのは大事、ということでRailsガイドを頭から読んでいく取り組みをしています。 各章ごとに、(Railsガイドにちゃんと書いてあるのに)知らなかった機能を雑にまとめていきます。

今回は、Action View ヘルパーの章です。

railsguides.jp

ベンチマーク

リンクはこちら

viewの中でかかった処理時間を計測できる。 結果はログに出力される。

<% benchmark "Benchmark Test" do %>
  <%= sleep 3 %>
<% end %>
Started GET "/books" for ::1 at
...
Benchmark Test (3005.2ms)
...
Completed 200 OK

distance-of-time-in-words

リンクはこちら

よく見かけるやつですね。Railsが用意してくれてるんですね。

DebugHelper

リンクはこちら

オブジェクトを見やすく表示してくれます。 試しにActiveRecordの1つのインスタンスを表示してみたら以下の感じでした。 デバッグは処理止めてサーバー内で値の確認などするので、使ったことなかったです。

<%= debug(@books.last) %>

NumberHelper

リンクはこちら

number_to_percentage

四捨五入してくれるみたいですね。

number_to_percentage(99.44, precision: 0) # => 99.4%
number_to_percentage(99.45, precision: 0) # => 99.5%

number_to_phone

デフォルトは英語なので、日本の電話番号形式に合わせるならパターンなど上手に設定する必要がありそうです。
また、日本の場合、基本的には0から電話番号が始まりますが、0から始まる数字だとSyntax Errorになったので、文字列にしないといけなさそうです。

number_to_phone(0120123456)
#=> ActionView::SyntaxErrorInTemplate
number_to_phone('0120123456')
#=> 012-012-3456
<%= number_to_phone('0120123456', pattern: /(\d{4})(\d{2})(\d{4})$/) %>
#=> 0120-12-3456

SanitizeHelper

リンクはこちら

sanitize_css

css = "background: url(javascript:alert('alert')); font-size: 10px;"
sanitize_css(css)
#=> "font-size:10px;"

リンクのテキストだけ抽出できる。ピンポイントで使うことがあるかもしれません。
以下で、strip_links(books_link)は「本の一覧へ」という文字列を返します。

<% books_link = capture do %>
  <%= link_to '本の一覧へ', books_path %>
<% end %>

<%= strip_links(books_link) %>

strip_tags

HTMLタグを除外する。
以下でstrip_links(books_link)は「本の一覧へアイウエオ」という文字列を返します。

<% books_link = capture do %>
  <!-- コメント -->
  <div><%= link_to '本の一覧へ', books_path %><span>アイウエオ</span></div>
<% end %>

<%= strip_tags(books_link) %>