0

ファイル(ファイル名、サイズ)をアップロードすることで発生する可能性のあるエラーを表示しようとしています。RubyonRails用のJqueryFielUploadの広告適応バージョンを使用しています 。このコードカットオフを変更しようとしましたが、できませんでした。

else
    format.html { render action: "new" }
    format.json { render json: @upload.errors, status: :unprocessable_entity }
end


私は次の検証を行っており、エラーが発生したときにjsonに書き込みを求めているので、次のようになります。

else
    format.html { render action: "new" }
    format.json { render json: @upload.errors, status: :unprocessable_entity, error:"Error!" }
end

(それは機能します)そして私は検証で書かれたエラーの仕様が必要です:message

私の検証:

validates :upload_file_name,  :presence   => true,
                                :format     =>{:with => %r{\.(cel)$}i}

  validates_uniqueness_of :upload_file_name, :message => "File with this name is already in the database"

  validates :upload_file_size,  :inclusion  => {:in =>10.megabytes..20.megabytes}, :message =>"Too big or too small"

  def to_jq_upload
  {
      "name" => read_attribute(:upload_file_name),
      "size" => read_attribute(:upload_file_size),
      "url" => upload.url(:original),
      "delete_url" => upload_path(self),
      "delete_type" => "DELETE" 
  }
  end

end

そして私が持っている唯一のJavaScript:

<script type="text/javascript" charset="utf-8">
  $(function () {
      // Initialize the jQuery File Upload widget:
      $('#fileupload').fileupload();
      // 
      // Load existing files:
      $.getJSON($('#fileupload').prop('action'), function (files) {
        var fu = $('#fileupload').data('fileupload'), 
          template;
        fu._adjustMaxNumberOfFiles(-files.length);
        console.log(files);
        template = fu._renderDownload(files)
          .appendTo($('#fileupload .files'));
        // Force reflow:
        fu._reflow = fu._transition && template.length &&
          template[0].offsetWidth;
        template.addClass('in');
        $('#loading').remove();
      });

  });
</script
4

1 に答える 1

0

あなたの質問をよく理解しているかどうかはわかりませんが'error'、json応答のキーにエラーメッセージを関連付ける必要がある場合は、次のようにすることができます。

render json: {error: @json.errors.full_messages}, status: :unprocessable_entity
于 2012-10-27T19:12:38.323 に答える