2011-08-23 4 views
7

は、それがベースエラーの行を追加することについて語る:FormtasticベースエラーFormtasticドキュメントで

<%= semantic_form_for @record do |form| %> 
    <%= form.semantic_errors :base %> 
    ...main body of form... 
<% end %> 

それはFormtasticは、フィールド固有のエラーのために楽なサポートが含まれるであろうことを私にパズルが、デフォルトで、それはありませんを提供していますbaseの宿泊施設です。 1)あなたは理由が分かっていますか?

2)私の状況では、フォームの開始直後にすべてのフォームに基本エラーを含めることができます。私がformtasticを使ってすべてのフォームのデフォルトを行う方法はありますか?

答えて

3

Formtastic 2.xでは、semantic_errorsには常に:baseが含まれています。

しかし、Rails 3(私はRails 3.2にあります)では、バリデーションからのエラーメッセージは、もはやベースに格納されず、代わりに属性別に格納されていることに気付きました。たとえば、このクラスに:

class User < ActiveRecord::Base 
    # has a name attribute 
    validates :name, :presence => true, :uniqueness => true 
end 

あなたの@ user.errorsは失敗した上でのオブジェクトの更新は次のようになります/作成:

#<ActiveModel::Errors:0x0000000 
    @base=#<User id:1, name: "">, 
    @messages={:name => ["can't be blank"]}> 

あなたはこのようなあなたのフォームを作成した場合、それは希望:name属性にエラーを出力します。

<%= semantic_form_for @user do |form| %> 
    <%= form.semantic_errors :name %> 
    ...main body of form... 
<% end %> 

これは模擬的な例ですが、私の言いたいことが分かります。

残念ながら、現在、それはあなたが任意およびすべてと一緒にすべてのベースのエラーを表示したい場合は

12

(再び、私はRailsの3.2を使用しています)のRails 3で「すべて」オプションをサポートしていformtasticコードベースでは何もありませんネストされた属性のエラー:

f.semantic_errors *f.object.errors.keys

回答から: https://github.com/gregbell/active_admin/pull/905

関連する問題