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

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

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

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

Ruby on Rails

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

Q&A

解決済

1回答

1001閲覧

【Rails】Viewにエラー文が2つ以上ある時、横一列に表示させたい

Hinoarashi.

総合スコア76

Ruby

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

Ruby on Rails

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

0グッド

0クリップ

投稿2022/01/06 11:55

編集2022/01/08 14:24

イメージ説明

上記のエラー文を横一列にしたいです。
Viewは以下のようになっております。

.register_form_area .register_form = form_for(@user, url: register_index_path) do |f| .register_form_font_top ニックネーム = f.text_field :name, :class => 'register_text_form' - if @user.errors.include?(:name) a style= "color: red; font-size: 12px; opacity: 0.7" = "#{@user.errors.messages[:name].first}" .register_form_font メールアドレス = f.text_field :email, :class => 'register_text_form' - if @user.errors.include?(:email) a style= "color: red; font-size: 12px; opacity: 0.7" = "#{@user.errors.messages[:email].first}" br = "#{@user.errors.messages[:email].second}" .register_form_font パスワード = f.text_field :password, :class => 'register_text_form', :type => "password" - if @user.errors.include?(:password) a style= "color: red; font-size: 12px; opacity: 0.7" = "#{@user.errors.messages[:password].second}" .register_form_font パスワード確認 = f.text_field :password_confirmation, :class => 'register_text_form', :type => "password" - if @user.errors.include?(:password_confirmation) a style= "color: red; font-size: 12px; opacity: 0.7;" = "#{@user.errors.messages[:password_confirmation].first}" = "#{@user.errors.messages[:password_confirmation].second}" .register_submit_outer = submit_tag "登録する", :class => "register_submit_inner", :id => "submit" .or | or   #{link_to "アカウントをお持ちの方はこちら", login_path, :style => "font-size: 14px; text-decoration: underline; color: #bdbdbd "}

each使えばいけるかもと思い、

.register_form_font パスワード確認 = f.text_field :password_confirmation, :class => 'register_text_form', :type => "password" - if @user.errors.include?(:password_confirmation) a style= "color: red; font-size: 12px; opacity: 0.7;" = @user.errors.messages[:password_confirmation].each do |user| = user

試してみたら

イメージ説明

[""]という意図しない記号がつくようになりました。

できればeachで実装できたら良いのですが、[""]を取り除く方法はないでしょうか?
よろしくお願いします。

追記2022.01.07 19:05

以下ja.ymlです。

--- ja: activerecord: attributes: user: name: 名前 email: メールアドレス password: パスワード password_confirmation: パスワード確認 activated: アクティブフラグ admin: 管理者フラグ errors: format: "%{attribute}%{message}" messages: empty: "%{attribute}を入力してください" required: "%{attribute}を入力してください" blank: "「%{attribute}」を入力してください" record_invalid: "バリデーションに失敗しました: %{errors}" restrict_dependent_destroy: has_one: "%{record}が存在しているので削除できません" has_many: "%{record}が存在しているので削除できません" date: abbr_day_names: - 日 - 月 - 火 - 水 - 木 - 金 - 土 abbr_month_names: - - 1月 - 2月 - 3月 - 4月 - 5月 - 6月 - 7月 - 8月 - 9月 - 10月 - 11月 - 12月 day_names: - 日曜日 - 月曜日 - 火曜日 - 水曜日 - 木曜日 - 金曜日 - 土曜日 formats: default: "%Y/%m/%d" long: "%Y年%m月%d日(%a)" short: "%m/%d" month_names: - - 1月 - 2月 - 3月 - 4月 - 5月 - 6月 - 7月 - 8月 - 9月 - 10月 - 11月 - 12月 order: - :year - :month - :day datetime: distance_in_words: about_x_hours: one: 約1時間 other: 約%{count}時間 about_x_months: one: 約1ヶ月 other: 約%{count}ヶ月 about_x_years: one: 約1年 other: 約%{count}年 almost_x_years: one: 1年弱 other: "%{count}年弱" half_a_minute: 30秒前後 less_than_x_seconds: one: 1秒以内 other: "%{count}秒未満" less_than_x_minutes: one: 1分以内 other: "%{count}分未満" over_x_years: one: 1年以上 other: "%{count}年以上" x_seconds: one: 1秒 other: "%{count}秒" x_minutes: one: 1分 other: "%{count}分" x_days: one: 1日 other: "%{count}日" x_months: one: 1ヶ月 other: "%{count}ヶ月" x_years: one: 1年 other: "%{count}年" prompts: second: 秒 minute: 分 hour: 時 day: 日 month: 月 year: 年 errors: format: "%{attribute}%{message}" messages: accepted: を受諾してください blank: を入力してください confirmation: "「%{attribute}」との入力が一致しません" empty: を入力してください equal_to: は%{count}にしてください even: は偶数にしてください exclusion: は予約されています greater_than: は%{count}より大きい値にしてください greater_than_or_equal_to: は%{count}以上の値にしてください inclusion: は一覧にありません invalid: は不正な値です less_than: は%{count}より小さい値にしてください less_than_or_equal_to: は%{count}以下の値にしてください model_invalid: "バリデーションに失敗しました: %{errors}" not_a_number: は数値で入力してください not_an_integer: は整数で入力してください odd: は奇数にしてください other_than: は%{count}以外の値にしてください present: は入力しないでください required: を入力してください taken: はすでに存在します too_long: は%{count}文字以内で入力してください too_short: は%{count}文字以上で入力してください wrong_length: は%{count}文字で入力してください template: body: 次の項目を確認してください header: one: "%{model}にエラーが発生しました" other: "%{model}に%{count}個のエラーが発生しました" helpers: select: prompt: 選択してください submit: create: 登録する submit: 保存する update: 更新する number: currency: format: delimiter: "," format: "%n%u" precision: 0 separator: "." significant: false strip_insignificant_zeros: false unit: 円 format: delimiter: "," precision: 3 separator: "." significant: false strip_insignificant_zeros: false human: decimal_units: format: "%n %u" units: billion: 十億 million: 百万 quadrillion: 千兆 thousand: 千 trillion: 兆 unit: "" format: delimiter: "" precision: 3 significant: true strip_insignificant_zeros: true storage_units: format: "%n%u" units: byte: バイト eb: EB gb: GB kb: KB mb: MB pb: PB tb: TB percentage: format: delimiter: "" format: "%n%" precision: format: delimiter: "" support: array: last_word_connector: "、" two_words_connector: "、" words_connector: "、" time: am: 午前 formats: default: "%Y年%m月%d日(%a) %H時%M分%S秒 %z" long: "%Y/%m/%d %H:%M" short: "%m/%d %H:%M" pm: 午後

追記2022.01.08

イメージ説明

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

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

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

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

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

ASOBU_dev

2022/01/07 02:53

「パスワード確認」を入力してください。のエラーメッセージを定義している箇所を追記していただけますでしょうか?
Hinoarashi.

2022/01/07 10:08

>ASOBU_dev メッセージありがとうございます。 エラーメッセージの定義というとja.ymlでしょうか? そちら追記させていただきました。 あとはモデルでpresence: trueかけて質問文の通りViewで描画してるぐらいの処理です。 どうかよろしくお願いいたします。
guest

回答1

0

ベストアンサー

いくつか方法はありますが、eachで並べるような形でもよいのでしたら一番かんたんなのは
@user.errors.full_messages.join(', ')
でしょうか

投稿2022/01/08 12:39

winterboum

総合スコア23567

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

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

Hinoarashi.

2022/01/08 14:26

ご回答ありがとうございます! 試してみましたが、追記のように全てのエラーメッセージが出力されました。。 :password_confirmationの全エラーメッセージ2つをただ横に並べたいだけなのですが。。
winterboum

2022/01/09 02:42

ああ、でしたら @user.errors.messages[:password_confirmation].join(', ') ですね
Hinoarashi.

2022/01/11 13:44

ありがとうございます!できました!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問