【パーフェクト Ruby on Rails】を読む - その10

2-5 ビュープレートについて

2-5-1 ヘルパーメソッドの利用

  • ヘルパーメソッド ViewをよりシンプルにDRYに書くための、Railsで用意されたモジュール。基本的にはviewをhelpしてくれるもの。自分で作ることもできる。

$ rails routesコマンドを打つと表示されるPrefixVerb以下に記載されている部分(例えばuserやprofileなど)に_path_urlなどをviewファイルで付け足す事で、その行きたいviewページまでのurlを簡単に指定することが出来ます。
※ただしコンソール上で試したい時は先頭にapp.profile_urlというようにします。

一部抜粋
- url_for
- link_to
- form_with
- stylesheet_link_tag
- javascript_pack_tag
- time_ago_in_words
- number_with_delimiter


trメソッド

p106 独自ヘルパーメソッドの定義の項目のコード

# app/helpers/application_helper.rb
module ApplicationHelper
  def to_hankaku(str)
    str.tr("A-Za-z", "A-Za-z")
  end
end

全角英文字を半角に変換するヘルパーメソッドでtrメソッド について学びました。
今回の場合はtr("A-Za-z", "A-Za-z")でハイフンの左辺から-の右辺までを指定しています。A-Zで大文字の範囲指定を行い、a-zで小文字の範囲指定を行なっています。大文字と小文字の間に区切りがなかった事で、初見では戸惑いました。

エスケープ処理

フォーム画面にscriptタグなどを書いても基本的には処理されません。これはRails側で守ってくれているのでやらなくても良い事ですが、意図的にエスケープ処理をしないようにする事もできます。

rawヘルパーメソッド

<%= raw "<script>alert('sample');</script>" %>

MVCについてのまとめ

  • Model層について、ActibeRecordの基本的な操作、バリデーション、コールバック
  • Controller層について、ModelとViewを繋ぐこと。リクエストオブジェクトやアクションコールバック、脆弱性への対処。
  • View層について、受け取ったModelを表示すること、テンプレートエンジン、ヘルパーメソッド、さまざまフォーマットでの表示

参照

ヘルパーメソッド
https://qiita.com/Yukaaaah/items/19e524fd0c0e4a3451f1
Ruby 3.0.0 リファレンスマニュアル instance method String#tr
https://docs.ruby-lang.org/ja/latest/method/String/i/tr.html