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