レールエラーをレンダリングするのに少し問題があります。主な問題は、ビューでエラーが配列出力を表示し、一緒に結合されないことです (ユーザーフレンドリー)。ビューに「結合」メソッドを追加できます。これは、複数のエラーがある属性で正常に機能します。当然ですが、属性にエラーが 1 つしか含まれていない場合、これは壊れます。
そのため、現在、コントローラーにエラーを結合して、属性に複数のエラーがある場合にきれいに見えるようにしようとしています。ビューに .join メソッドを追加しようとしても機能しません。これは、エラーが 1 つあるインスタンスでは機能しないためです (文字列に対して join メソッドを呼び出すことができないため)。
コントローラーでこれを機能させる方法についてのヘルプは素晴らしいでしょう。この問題を処理する別の方法に関する提案も素晴らしいです。(このようにコントローラーで配列エラーをきれいに/結合しようとする私のロジックから)
コントローラ:
if @person.errors.blank? && @person.save
flash[:info] = "Your profile has been successfully updated."
redirect_to profile_url(@person) and return
else
if @person.errors.on(:first_name).is_a?(Array)
@person.errors.on(:first_name).join
end
flash[:warning] = "Sorry, there was a problem saving your profile. Please try again."
render :edit
end
意見:
%li
= label(:person, :first_name, "First Name")
= f.text_field :first_name
- if @person.errors[:first_name].present?
%span{:style => "color: red; margin-left: 180px;"}= @person.errors[:first_name]