0

ユーザーモデルを含むRailsアプリケーションがあります。ユーザーは属性 (アドレス、名前、パスワード、ロケール) を編集できます。

RESTful にするために、User-Model のリソースを作成しました

#routes.rb
resources :users, only: [:edit, :update]

ユーザーが自分の属性を更新できるページ (/users/:id/edit) には、複数のフォーム (住所などの一般情報用、ロケール設定用、パスワード変更用) が含まれています。

この 3 つの形式はそれぞれ次のようになります。

 = form_for(current_user, html: { class: 'fill-up' }) do |f|
    .padded
      = render 'shared/error_messages', object: current_user
      = f.label :locale
      .input
        = f.select(:locale, [['Deutsch', 'de'], ['English, 'en']])
    .form-actions
      = f.button 'Submit', class: 'button'

問題は、編集アクションをレンダリングして current_user-object のエラー メッセージを表示すると、これらのエラー メッセージが 3 つのフォームすべてに表示されることです。

モデル属性をさまざまな形式に分割し、エラー メッセージをすべてではなく 1 つの特定の形式にのみ表示するための Rails のベスト プラクティスは何ですか。

4

1 に答える 1

1

これに対する 1 つの解決策は、1) アドレス 2) パスワードの 2 つのフォームがあるとします。

次に、アドレス編集フォームで、current_user のアドレス属性のエラーのみを表示します。

current_user.errors[:address] if current_user.errors.has_key?(:address )

そしてそうではない

current_user.errors

同様に、パスワードフォームの場合、パスワードエラーを表示するだけです

current_user.errors[:password] if current_user.errors.has_key?(:password )

このようにして、すべてのフォームで同じエラーを回避できます。

于 2013-08-20T12:38:07.783 に答える