1

Railsは初めてで、簡単な演習を行っています。今、私はエラーメッセージをいじっています。これらのデフォルトの動作に関していくつか質問があります

1)すべてのエラーには属性のプレフィックスが付いています:すべてのエラー メッセージに、検証エラーの原因となる変数がプレフィックスとして付けられているのはなぜですか? この場合はscore. この属性名をエラー メッセージから削除して、エラー メッセージを表示するにはどうすればよいですか? これを行う簡単な方法がありますか?

2)赤色のハイライト: 「スコア」ラベルと対応する入力フィールドが赤色で囲まれているのはなぜですか。_form.html.erb ファイルによると、<div class="field">この赤いアウトラインがどこから来ているのかわかりません。これを変更する方法はありますか?

ありがとう!

エラーメッセージ

4

1 に答える 1

1

Railsへようこそ!まず、デフォルトの足場を使用しています。Rails 3.2+ を使用している場合、スタイルは にあります/app/assets/stylesheets。というファイルがそこにあるはずですscaffold.css.scss。このファイルは、ページの赤をスタイリングするものです。

マークアップに関しては、これらのメッセージの表示方法を制御できます。オブジェクトが保存されたが、検証が失敗した場合、オブジェクトにはオブジェクトがありerrorsます。

@car = Car.new(params[:car])
@car.save #=> false
@car.errors.messages #=> {:make => "can't be blank", :model => "doesn't make sense"}

ご覧のとおり、このエラー オブジェクトのメッセージ メソッドは、キーが検証に失敗した属性であり、値が検証からの文字列メッセージであるハッシュを返します。

これらの検証はモデルで設定され、完全にカスタマイズできます。

class Car
    validates :make, presence: true
    validates :model, presence: true, message: "doesn't make sense"
end

したがって、あなたの見解では、次のようなことを簡単に行うことができます

<% if @car.errors.any? %>
   <% @car.errors.messages.each do |field, message| %>
       <!-- your custom html here -->
    <% end %>
<% end %>

これが役立つことを願っています!

于 2013-05-29T23:47:33.163 に答える