ビューヘルパーとは?
ビューのテンプレートファイル(ERB)を記述する際に役立つメソッドの総称です。フォーム要素生成を初め様々なビューヘルパーがあります。なお、ビューヘルパーは自作することも可能なのでもしこういう機能が欲しいということを思いついたら自作してみましょう。
文字列数値関連のビューヘルパー
pluralizeメソッド
文字列を複数形に変換します。
truncateメソッド
指定した桁数で切り捨てます。
excerptメソッド
文字列から特定の文字列のみ抜粋する。
cycleメソッド
テーブルリストの背景色をn行おきに変更する。
highlightメソッド
特定キーワードをハイライト表示する。
concatメソッド
スクリプトブロック(<% 〜 %>)の中に出力コードを埋め込む)
simple_formatメソッド
デフォルトで文字列をpタグで囲い、改行を置換してくれます。
sanitizeオプション
テキストに含まれる一部危険なHTMLタグを取り除いてくれます。ただ、一部のタグしか安全な形にできないので全てのタグを安全にしたい場合はfalseにしてhメソッドで実装すると良いでしょう。
wrapper_tagオプション
デフォルトで囲まれるタグはpタグですが、div等囲むタグを他のタグに置換することができます。
sprintfメソッド
文字列を指定したフォーマットに整形する。
number_xxxxメソッド
数値を様々な形式に加工する。(円やドルやKB等)
strftimeメソッド
日付データを整形する。
リンク関連のビューヘルパー
link_toメソッド
テキストリンクを生成するビューヘルパーです。普通にaタグを使って書くこともできますがこちらの方がモデルやルートと連携できる等Railsの機能との親和性が高いので優先的に使いましょう。
url_forメソッド
ルート定義から動的にURLを生成する。
link_to_if/link_to_unlessメソッド
条件に応じてリンクを生成する。
link_to_unless_currentメソッド
現在のページの場合はリンクを無効化する。
mail_toメソッド
メールアドレスへのリンクを生成する。
外部リソース指定のためのビューヘルパー(Assetヘルパー)
image_tagメソッド
画像を表示する。
audio_tag/video_tagメソッド
音声や動画をブラウザで再生する。
auto_discovery_link_tagメソッド
ブラウザのフィード検出機能を有効にする。(RSSフィードやAtomフィード等)
favicon_link_tagメソッド
サイトのファビコンを定義する。
stylesheet_link_tagメソッド
読み込ませるCSSファイルを定義する。
javascript_include_tagメソッド
読み込ませるJavaScriptファイルを定義する。WebpackでビルドしたJavaScriptをインクルードすることが可能です。
xxx_pathメソッド
外部リソースのパスを取得する。
その他のビューヘルパー
debugメソッド
構造化データ(テンプレートに渡された配列やオブジェクト)をダンプ出力(YAML形式)する。
captureメソッド
断片的なテンプレートの出力結果を変数に格納する。
tagメソッド
Rails5.1で追加されたタグを生成することができるビューヘルパーです。従来からあるcontent_tagメソッドに比べてシンプルに記述可能です。デフォルトでHTML5もサポートしています。
構文
1 |
tag.タグ名 |
例
1 |
tag.span class: 'test' |
上記の記述では下記のようなタグが生成されます。
1 |
<span class="test"></span> |
content_tagメソッド
タグを生成できるビューヘルパーです。レガシーな記法であるとされているのでできるたけtagメソッドを使うようにした方が良いでしょう。
1 |
content_tag :span, nil, class: 'test' |
上記の記述では下記のようなタグが生成されます。
1 |
<span class="test"></span> |
エスケープする
<%= 文字 %>
erbのデフォルトでエスケープします。
h
html_escapeと同じです。
XSS(クロスサイトスクリプティング)の対策をすることができます。例えば「<」であれば「<」に置換してくれます。
sanitizeメソッド
与えられた文字列からHTMLの属性を除去する。(サニタイズする。)
html_escape
hのエイリアスメソッドで同じです。
safe_join(配列,改行)
配列に含まれる文字をエスケープして結合して、<br>を加えることが可能です。
エスケープしない
html_safe
nilにはhtml_safeがないので例外が発生してしまいます。
raw
nilでも使えるので「html_safe」よりも良いらしいです。
<%== 文字 %>
rawよりも良いし、nilでもエラーが起きないのでrawよりも良いらしい。
simple_format
pタグや改行コードをbrに置換してくれます。hオプションを併用すればエスケープすることができます。
この記事へのコメントはありません。