3

Ajax を使用してカテゴリを作成しようとすると、エラー メッセージで奇妙な動作が発生します。

現在、次のようなエラー メッセージが表示されています。

ここに画像の説明を入力

私の create.js.erb と new.js.erb は両方とも、次の行だけの同じコードを持っています:

$(".cc-form").html("<%= escape_javascript(render(:partial => 'categories/form', locals: { category: @category })) %>");

これは私のカテゴリフォームです:

<%= form_for(@category, :remote => true, :html => { :class => "add-form", :id => "cform" }) do |f| %>
<fieldset>
   <p>
      <%= f.label :name, "Category Name *" %>
      <br />
      <%= f.text_field :name %>
   </p>
   <div class="form-actions">
     <%= f.submit "Create" %>
   </div>
</fieldset>

カスタム エラー HTML を有効にするコードは次のとおりです。

# application.rb

ActionView::Base.field_error_proc = Proc.new do |html_tag, instance|
   errors = Array(instance.error_message).join(',')
   %(#{html_tag}<span class="validation-error">&nbsp;#{errors}</span>).html_safe
end

次に、HTML 自体とエラー HTML:

<p>
  <label for="category_name">Category Name *</label><span class="validation-error">&nbsp;can't be blank</span>
  <br>
  <input id="category_name" name="category[name]" size="30" type="text" value=""><span class="validation-error">&nbsp;can't be blank</span>
</p>

labelの右側ではなく、横にあるエラー メッセージのみが必要ですinput。どうすればいいですか?私が見たとき、そのフォーマットは私にとってトリッキーです。

ありがとう。

4

2 に答える 2

1

field_error_proc入力フィールドを特別なクラスで要素にラップするのは良いので、あなたの使い方は悪いと思います。参照されるオブジェクト(エラー配列を持つことを意味する)が同じであるため、デフォルトField_error_procでラベルと入力タグの両方にタグを付けます。この場合、ラベルの色を赤に変更するのに適しているため、欠陥ではありません。Rails コード ( ) を確認しましたが、ラベルに対してこの動作をオフにすることはできません (機能要求である可能性があります)。そのため、ラベルにプレーンな html を使用する場合、問題の解決策は 1 つしかないと思います。field_with_error:namecategory.nameactionpack/lib/action_view/helpers/tags/label.rb

あなたの問題に対して、現在2つの解決策があります。

  • それ以外の

    <%= f.label :name, "カテゴリ名 *" %>

    使用する

    <label for="category_name">カテゴリー名 *</label>

    あなたの見解で。

  • あまりいいものではありませんが、スタイルシートファイルでf.label作成すれば使用できます。form .label .validation-error { display: none }それが単なる回避策であることf.labelは知っていますが、必要な場合、より良い解決策はわかりません。

于 2012-08-11T18:02:23.900 に答える
0

ページには次の 2 つの<span>タグがあります。

<span class="validation-error">&nbsp;can't be blank</span>

編集:

わかりました、ラベルと入力の両方をカスタム エラーでラップする必要があるようです。ここにいくつかのリンクがあります:

http://stackoverflow.com/questions/5267998/rails-3-field-with-errors-wrapper-changes-the-page-appearance-how-to-avoid-t

https://gist.github.com/1464315

于 2012-08-04T12:40:31.397 に答える