JSON response , error message

Hello
I am trying to show the errors that can occur by uploading a file (file
name, size).
I need have your error messages associated to the ‘error’ key in my json
response

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

my validations:

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

I have tried:
format.json { render json: => [{:error=> @upload.errors.full_messages }]
}
using this shows the validation message but I need the status: to be
there
as well

render json: {error: @upload.errors.full_messages}, status:
:unprocessable_entity
shows no error messages at all

render json: {error: @upload.errors.full_messages}, status:
:unprocessable_entity
I get an error-text : Internal Server Error and not what stands in my
validation messages

Thanks in advanced

in your controller:

render :json => { :errors => @example.errors.full_messages }, :status =>
422

in your js file:

$('.form_id_or_class').live('submit', function() {
  $.ajax({
    url: $(this).attr("action"),
      type: "POST",
      data: $(this).serialize(),
      success: function(data) {
       // do some action
    }
    ,error: function(xhr){
      var errors = $.parseJSON(xhr.responseText).errors
    }
  });
  return false;
});

On Sun, Oct 28, 2012 at 1:37 AM, Akvarel [email protected]
wrote:

end
=>10.megabytes…20.megabytes}, :message =>“Too big or too small”

shows no error messages at all
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
To view this discussion on the web visit
https://groups.google.com/d/msg/rubyonrails-talk/-/tbZoal6I0UgJ.
For more options, visit https://groups.google.com/groups/opt_out.


Regards by
Saravanan.P

On Sun, Oct 28, 2012 at 12:26 AM, Saravanan P
[email protected] wrote:

render :json => { :errors => @example.errors.full_messages }, :status => 422

Why are you sending a 422? If you really want to stick in the 400
range it would be more suitable to send a 409 conflict since it
literally is a conflict but some just prefer to stick to a generic
500.

    }
    ,error: function(xhr){
      var errors = $.parseJSON(xhr.responseText).errors
    }
  });
  return false;
});

The only js script i have there is the following and it is in the
index.html.erb. I am using this example for File uploader in Ruby on
Railshttps://github.com/tors/jquery-fileupload-rails-paperclip-example
.
Should I just add your code to mine or mine code has to be modified?

On Sunday, 28 October 2012 02:07:27 UTC-4, Jordon B. wrote:

422 is the recommended behavior from respond_with and friends:

https://github.com/rails/rails/blob/master/actionpack/lib/action_controller/metal/responder.rb#L259

409 seems odd, given that the error could be “file too large” which
isn’t
really “a conflict with the current state of the resource” as described
in
the RFC.

Also note that returning a 422 causes ActiveResource to behave in an
expected manner (failing a save rather than raising an exception), which
may-or-may-not be relevant for this use case.

–Matt J.