ActiveResource error handling ActiveResource error handling ruby ruby

ActiveResource error handling


From rails source code I figured out that the reason ActiveResource didn't get errors was because I wasn't assigning errors to "errors" tag in json. It's undocumented but required. :)

So my code should have been:

render :json => {:errors => user.errors}, :status => :unprocessable_entity


In the code:

class UsersController < ActionController::Base  def create    respond_to do |format|      format.json do        user = User.new(:username => params[:username], :password => params[:password])        if user.save          render :json => user        else          render :json => user.errors, :status => :unprocessable_entity        end      end    end  endend

try to replace

user = User.new(:username => params[:username], :password => params[:password])

with

user = User.new(params[:user])

Your active-resource model pass the params like the hash above:

:user => { :username => "xpto", :password => "yst" }


This solution worked for me: https://stackoverflow.com/a/10051362/311744

update action:

def update    @user = User.find(params[:id])    respond_to do |format|      if @user.update_attributes(params[:user])        format.html { redirect_to @user, notice: 'User was successfully updated.' }        format.json { head :no_content }      else        format.html { render action: 'edit' }        format.json {          render json: @user.errors, status: :unprocessable_entity }      end    end  end

Calling controller:

@remote_user = RemoteUser.find(params[:id])if (@remote_user.update_attributes(params[:remote_user]))  redirect_to([:admin, @remote_user], notice: 'Remote user was successfully updated.')else  flash[:error] = @remote_user.errors.full_messages  render action: 'edit'end