4

私はモデルを持ってCampinghas_many Imagesます。キャンプには少なくとも 1 つの画像が必要です。

class Camping < ActiveRecord::Base
  attr_accessible :images_attributes
  has_many :images
  validates_presence_of :images, :message => "At least one image is required"
  accepts_nested_attributes_for :images, :allow_destroy => true
 end

次に、formtasticを使用するactive_adminで、エラー メッセージAt least one image is requiredをレンダリングしf.semantic_errorsます。

ActiveAdmin.register Camping do
  form :html => { :multipart => true } do |f|
     f.semantic_errors :images
     #....
     f.inputs "Images" do
      f.has_many :images do |img|
        #....
      end
    end
    #....
  end
end

これは次のようにレンダリングされます。

エラーの出力例

画像 少なくとも 1 つの画像が必要です

レンダリングするにはどうすればよいですか:少なくとも 1 つの画像が必要ですか?

f.semantic_errors :imagesを ' に変更f.semantic_errors(:images を削除) すると、何もレンダリングされなくなります。エラーはまったくありません。

注: API ドキュメントは、Formtastic が常に:attribute名前をエラーに追加することを暗示しているようです。しかし、このコードがどのように機能するかは完全にはわかりません。

4

2 に答える 2

3

このようなカスタム メッセージを使用する場合は、特定の属性に関連するのではなく、オブジェクトの状態全体に関連するエラー メッセージを追加できます。

これを変える

validates_presence_of :images, :message => "At least one image is required"

のようなものに

   validate :should_have_images
   def should_have_images
       errors.add(:base, "At least one image is required") if images.blank?
   end
于 2013-01-23T19:24:13.273 に答える