りゅうじの学習blog

学習したことをアウトプットしていきます。

2021年9月10日 パーフェクト Ruby on Rails

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