1

現在、検証エラーが発生すると、divwithclass="field_with_errors"が私のフォームにレンダリングされます:

<form method="post" action="/users" accept-charset="UTF-8">
  <div class="field_with_errors">
    <input id="user_email" type="text" value="tom@test.com" name="user[email]">
  </div>
  <input id="user_password" type="password" value="mypass" size="30" name="user[password]">
  <input id="user_submit" type="submit" value="Submit" name="commit">
</form>

追加の gem を使用せず、Rails 3 環境で、検証エラーのレンダリング方法を変更する方法はありますか? たとえば、エラーのあるタグのdiv後に検証エラーをレンダリングする必要があります。input

<input id="user_email" type="text" value="tom@test.com" name="user[email]"><div class="field_with_errors"></div>

また、特定のエラーを表示する方法はありますか? メール エラーの場合はdiv、入力テキスト ボックスの後に をレンダリングし、「メールを再入力してください」というメッセージを生成します。

(これまでに行った検索のほとんどは、解決策として gem を使用しています。)

4

1 に答える 1

5

1.オーバーライドすることでfield_with_errorsラッパーを削除できます。これを:ActionView::Base.field_error_procに入れることで実行できます。config/application.rb

config.action_view.field_error_proc = Proc.new { |html_tag, instance| "#{html_tag}".html_safe }

参照

Rails 3:「field-with-errors」ラッパーはページの外観を変更します。これを回避する方法は?

2.特定のフィールドにエラーメッセージを表示できます。

<input id="user_email" type="text" value="tom@test.com" name="user[email]">
<% if @user.errors.on(:email).present? %>
   <span class="error">Re-enter your email(or)<%= @user.errors.on(:email) %></span>
<% end %>

次にCSSで

.error {
  color: red;
}
于 2012-04-18T05:12:03.850 に答える