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

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

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

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

Q&A

解決済

2回答

4133閲覧

複数レコードを一度に入力するようなフォームのエラーメッセージ

t-sagiri

総合スコア31

Ruby on Rails

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

0グッド

3クリップ

投稿2015/08/28 07:42

編集2015/08/28 07:43

環境
Rails 3.0.9
Ruby 1.9.2

http://ruby.studio-kingdom.com/rails/guides/form_helpers#building_complex_forms
こちらの「9. 複雑なフォームの構築」のようなフォームの場合、エラーメッセージを「n番目の住所を入力してください。」といった形でエラーメッセージを出すにはどうしたらよいでしょうか?
(「住所を入力してください。」といった形ではなく、何番目に入力したどの項目がエラーなのか?をエラーメッセージでわかるようにしたいです。)

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

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

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

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

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

guest

回答2

0

ベストアンサー

たとえば、modelに属性をたして、

ruby

1 attr_accessor :sort_order

controllerののformをrenderするaction(newとか?)で、
上記で足した属性に昇順に値をセットして、
view側で、sort_orderをhidden項目として情報を持たせる

親model側(person?)のメソッドで上記のような感じで定義して

ruby

1 def add_error(attr, msg) 2 @errors.set(attr, msg) 3 end

controllerの登録するaction(create?)で
子モデル(address?)のvalidationでエラーになった場合、
親modelのadd_errorで「n番目の住所を入力してください。」のエラーをつける

ruby

1@person.addresses.each do |address| 2 if address.errors.has_key?(:street) 3 msg = address.sort_order.to_s + '番目の番地を入力してください' 4 @person.add_error(:addresses, msg) 5 end 6end

行儀はあまりよくないですが、上記のような感じで(ざっくりした説明ですみません)
実装できるかと思います。

投稿2015/08/31 15:34

ylang365

総合スコア175

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

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

t-sagiri

2015/08/31 22:48

ありがとうございます。 なるほど、何番目のフォームか分かるようにしておいて、controller側でエラーメッセージをごにょごにょすればできそうですね。助かりました。
guest

0

参考情報

このページでは、つぎのようなエラー表示をさせる例が示されています。
イメージ説明

投稿2015/09/06 22:30

katoy

総合スコア22324

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

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

t-sagiri

2015/09/07 13:50

エラーを出すだけなら、実装することはできました。教えていただいた記事だと、Railsデフォルトなエラーメッセージをただ出力しているだけのような気がします。それだと、この質問で求めている回答とは違うように思うのですが… どの辺が参考になるのか、よく分からなかったです。 あと、ベストアンサーを選んだ時点で、回答はもう欲してないです。
KSK.UCHI

2015/09/07 13:56

え、酷っ・・・。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問