LoginSignup
1
1

More than 3 years have passed since last update.

Ruby on Rails のエラーメッセージ表示から日本語化まで

Posted at

プログラミング勉強中、機能を実装したので備忘録として残します。
初心者のため、間違っている箇所あるかもですがご了承ください。

エラーの表示方法

参考資料

https://qiita.com/satreu16/items/a072a4be415f30087ed7

Rails エラーメッセージの表示 - Qiita

https://note.com/hbkk/n/ndc2c306696b2

https://blog.yuhiisk.com/archive/2018/05/22/rails-display-error-message.html

Rails エラーメッセージの出し方 バリデーションエラー - Qiita

Model

post.rb

class Post < ApplicationRecord
  belongs_to :user
    # content カラムのみ入力を禁止。140文字までしか入力を認めないよう設定。
  validates :content, presence: true, length: { maximum: 140 }
end

View

new.html.erb


<%= form_with model: @post, local: true,  html: {class: "form_area"} do |f| %>
        <div class="form_area__field">
                    # エラーの場合 layouts/error_messages に遷移, object という名前で遷移先にエラーメッセージを渡す。
          <%= render 'layouts/error_messages',  object: f.object %>
          <%= f.text_area :content, id: "post_text", placeholder: "投稿内容を入力", rows: 10 %>
            <div class="form_area__hidden_field">
              <%= hidden_field :post, :user_id, value: current_user.id %>
            </div>
            <div class="form_area__action">
              <%= f.submit "投稿", class: "form_area__action__btn" %>
            </div>
        </div>

error_messages.erb

# error が格納されているか確認
<% if object.errors.any? %>
    <div class="vali_alert">
      <ul>
                # エラーメッセージを全て取得。each 文で回す。
        <% object.errors.full_messages.each do |message| %>
          <li><%= message %></li>
        <% end %>
      </ul>
    </div>
  <% end %>

他のフォームでも使用できるようにエラーメッセージを部品化することをパーシャルという。

エラーメッセージの日本語化

参考資料

[初学者]Railsのi18nによる日本語化対応 - Qiita

【Ruby on Rails】エラーの日本語表記

Gem のインストール

gem 'rails-i18n'

bundle install 実施

config/application.rb に追記

config.i18n.default_locale = :ja
config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s]

locales/ja.yml を作成

ja:
  activerecord:
    attributes:
        # 日本語設定したいモデル名
      post:
        # カラム名と対応させたい日本語
        content: 'コンテンツ'
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1