5

だから私はこのような入力要素を持っています。ラッピング要素は、視覚的なものです。

<div class="input-wrap">
  <input class="blah-blah" />
</div>

にエラーが含まれている場合は<input>、次のようになります。

<div class="input-wrap">
  <div class="field-with-errors">
    <input class="blah-blah" />
  </div>
</div>

しかし、私がやりたいことは次のとおりです。

<div class="input-wrap field-with-errors">
  <input class="blah-blah" />
</div>

私はこのページを見つけました、それは私の質問に非常に近いです

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

今、私は私が投げることができることを知っています

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

エラーのあるタグの周りにラップタグを作成しないように<input>します。しかし、私が本当にやりたいことは、<input>タグの直接の親に "field-with-errors" クラスを追加することです。それをしてもいいですか?ActionView は DOM ノードのツリー構造を保持していますか?

4

1 に答える 1

-2

エラーを処理するためのコードは、好きな場所に置くことができます。たとえば、インスタンス変数のブロックとして呼び出すだけです。

if @instance.errors.any?
  <div class="field with errors">
  @instance.errors.full_messages.each do |msg|
    <p><%= msg %></p>
  end
end

これを頻繁に使用する場合は、ヘルパーに引き出して、インスタンス変数をパラメーターとして渡すとよいでしょう。

于 2013-03-26T03:08:08.300 に答える