0

Ruby on Rails 3 で「 paperclip」gem を使用していますが、このアプローチでカスタム プレゼンス検証を処理したいと考えています。 ' このフィールドに対してエラーをスローします。"./Users/Desktop/image.gifC:/Users/Desktop/image.gif

RoR は「file_field」を他のフィールドとは異なる方法で処理するため、これを行うには問題があると思います。

注意: 「paperclip」にある「validates_attachment_presence」メソッドを使用したくありません。

私がやりたいことをするのは良いアプローチですか?もしそうなら、それを行う方法は?


コントローラーでコードを試しました:

if params[:user][:avatar].blank?  
  # I also used 
  # - 'nil?' instead of 'blank'
  # - !params[:user][:avatar]
  @user.errors.add( :avatar, "can not be blank" )
end

しかし、空のファイル (nil/空のパス値) でフォームを送信しようとすると、

NoMethodError 予期
しないときに nil オブジェクトがあります!
ActiveRecord::Base のインスタンスを期待していたかもしれません。
nil の評価中にエラーが発生しました。[]

4

1 に答える 1

1

アイデア: Javascript を使用して、最初にテキスト フィールドに何かが入力されるまでアップロード ボタンを有効にしないこともできます。これにより、サーバーへの不要なラウンドトリップが不要になります。User.rb モデルが attr_accessible を使用している場合、フィールドがその行に存在することを検証することをお勧めします。

于 2011-01-19T23:44:11.493 に答える