現在railsで簡単なアプリを作っています。
ユーザ登録フォームからpeopleデータベースにユーザ登録する際に
表示されるエラーメッセージを日本語化したいと考えていました。
下記サイトを参考に上記実現を試みたところ
https://qiita.com/Ushinji/items/242bfba84df7a5a67d5b
personモデルのバリデーションによるエラーメッセージを日本語化する際に
ja.ymlが読み込まれず、日本語化ができないです。
関連ドキュメントを下記に示します。
解決策をご教授頂けないでしょうか
rails-i18nは導入済みです。
該当のソースコード
config/locales/ja.yml
ja: activerecord: models: person: パーソン attributes: person: name: 名前 age: 年齢 email: メールアドレス password: パスワード
config/application.rb
require_relative "boot" require "rails/all" # Require the gems listed in Gemfile, including any gems # you've limited to :test, :development, or :production. Bundler.require(*Rails.groups) module Insta class Application < Rails::Application # Initialize configuration defaults for originally generated Rails version. I18n.load_path += Dir[Rails.root.join("config", "locales", "**", "*.{rb,yml}")] config.i18n.default_locale = :ja config.load_defaults 5.2 # Settings in config/environments/* take precedence over those specified here. # Application configuration can go into files in config/initializers # -- all .rb files in that directory are automatically loaded after loading # the framework and any gems in your application. end end
app/views/people/add.html.erb
<h1>ユーザ登録</h1> <p class="error_message"><%= @msg %></p> <div class="form1"> <table> <%= form_for(@person, url: { controller: "people", action: "create" }) do |form| %> <tr> <th>Name</th> <td><%= form.text_field :name, :size => "20" %></td> </tr> <tr> <th>Age</th> <td><%= form.text_field :age, :size => "3" %></td> </tr> <tr> <th>email</th> <td><%= form.text_field :email, :size => "30" %></td> </tr> <tr> <th>password</th> <td><%= form.text_field :password, :size => "30" %></td> </tr> <%= form.submit "登録", class: "button" %> <% end %> </table> </div>
app/controllers/people_controller.rb
class PeopleController < ApplicationController def index @msg = "Person data." @data = Person.all end def add @person = Person.new end def create @person = Person.new person_params if @person.save redirect_to "/people" else re = "" @person.errors.messages.each do |key, vals| vals.each do |val| re += '<span style="color:red">' + key.to_s + "</span> " + val + "<br>" end end @msg = re.html_safe render "add" end if request.post? Person.create(person_params) end end private def person_params params.require(:person).permit(:name, :age, :email, :password) end end
補足情報(FW/ツールのバージョンなど)
Rails 5.2.4.4
ruby 2.7.2
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/03/03 06:02