質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Q&A

解決済

2回答

1075閲覧

バリデーションのメッセージを日本語表記にしたいです

tamu_daiki

総合スコア10

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

0グッド

0クリップ

投稿2021/10/07 08:34

編集2021/10/07 11:21

バリデーションのメッセージを日本語に変換したいのですが、できません。
バリデーションを設定してるのは、二個あり。
Userモデル
Postモデルです。
Userの方は、日本語に変換されるのですが、Postの方は、なぜか変換されません。
一度コードを見てもらいたいです

※config.i18n.default_locale = :ja 記載あり
※gem 'rails-i18n'インストール済み

出力結果は
Shopnameを入力してください
Shopaddressを入力してください
Shopcontentを入力してください
のようにカラム名がそのまま出力されます

実現したいことは、ja.ymlに記載されてるように
お店の名前を教えてください
お店の住所を入力してください
どんなお店かを入力してください
というふうに表示させたいです

Post.rb

class Post < ApplicationRecord belongs_to :user validates :shopname, presence: true, length: { maximum: 20 } validates :shopaddress, presence: true, length: { maximum: 30 } validates :shopcontent, presence: true, length: { maximum: 300 } has_many :comments end

バリデーションメッセージを表示させたい部分(index.html.erb)

<%= form_with(model: @post, local: true) do |f| %> <% if @post.errors.any? %> <% @post.errors.full_messages.each do |message| %> <div class = "alert alert-success" role="alert"><%= message %></div> <% end %> <% end %> <div class = "row"> <div class="col"> <%= f.label :shopname, 'お店の名前' %> <%= f.text_area :shopname, class: 'form-control', placeholder: "お店の名前" %> </div> <div class="col"> <%= f.label :shopaddress, 'お店の住所'%> <%= f.text_area :shopaddress, class: 'form-control', placeholder: "できるだけ詳しく" %> </div> </div> <%= f.label :shopcontent, '詳しく教えてください' %> <%= f.text_area :shopcontent, class: 'form-control', rows: "10", placeholder: "待ち時間や店員さんの対応" %></br> <%= f.submit '投稿',class: 'btn btn-success btn-block' %>

postcontroller

def new @post = Post.new end def create @post = Post.new(post_params) @post.user_id = current_user.id if @post.save redirect_to posts_path else @q = Post.ransack(params[:q]) @posts = Post.all.page(params[:page]).per(6).order("id DESC") render action: :index end end

application.rb

module UberEvaluation class Application < Rails::Application # Initialize configuration defaults for originally generated Rails version. 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. # Don't generate system test files. config.generators.system_tests = nil config.i18n.default_locale = :ja end end

ja.yml

ja: views: pagination: first: <i class="fas fa-angle-double-left"></i> last: <i class="fas fa-angle-double-right"></i> previous: <i class="fas fa-angle-left"></i> next: <i class="fas fa-angle-right"></i> truncate: "..." ja: activerecord: models: post: attributes: post: shopaddress: お店の住所 shopcontent: どんなお店か shopname: お店の名前 ja: activerecord: models: user: attributes: user: name: ユーザーネーム password: パスワード password_confirmation: 確認用パスワード

よろしくお願いします

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

y_waiwai

2021/10/07 08:41

できない、だけじゃなく、どういうふうに出力されるのか説明しましょう。 また、それをどういうふうにしたいのかも説明しましょう
tamu_daiki

2021/10/07 11:23

y_waiwaiさま 記載のアドバイスありがとうございます 確かに現状と実現したいことの記載がなければわかりにくいなと、言われて気づきました。 ありがとうございます。 質問については。編集させていただきました。
guest

回答2

0

自己解決

ja: activerecord: models: post: #商品モデル attributes: post: shopname: お店の名前 shopaddress: お店の住所 shopcontent: どんなお店だったか user: name: ユーザーネーム password: パスワード password_confirmation: 確認用パスワード

とすることで解決

複数モデルをバリデーションする際は、特に区切らなくていいみたいです

参考にした質問

投稿2021/10/08 07:55

tamu_daiki

総合スコア10

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

半日回答が無いようなので、自信はないですが気になったところを2点

  1. activerecord: の上の行の ja: は意味が無いので削除しましょう
  2. ここが自信の無いところなのですが、activerecord: が同じレイヤーで二回出てきます。一回目が二回目で上書きされているのかも。

同じレイヤー:{ ja: { activerecord: { attributes: { ,,, } }}}

activerecord: attributes: post: shopaddress: お店の住所 shopcontent: どんなお店か shopname: お店の名前 user: name: ユーザーネーム

で試してください。

投稿2021/10/07 22:56

winterboum

総合スコア23567

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tamu_daiki

2021/10/08 07:12

winterboumさん回答ありがとうございます 試してみてもやはりダメでした。 vscodeのpritter使ってインデントを直してみたのですが、それでも変わらずでした。
tamu_daiki

2021/10/08 07:52

winterboum様 今解決しました attributes: によって上書きされてたみたいです。 winterboumさんのおかげで解決できました。ありがとうございます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問