Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

respond_with is asking for location on error

I have a pretty standard authenticate method

  private

  def authenticate_user
    @current_user = User.find_by_authentication_token(params[:token])
    unless @current_user
      error = { :error => "Invalid token." }
      respond_with(error, :status => 401 )
    end
  end

I am calling the API to ensure the authenticate fails.

I get an error stating

ArgumentError (Nil location provided. Can't build URI.):
  app/controllers/api/v1/base_controller.rb:13:in `authenticate_user'

What am I doing wrong?

like image 388
Pykih Avatar asked Oct 20 '11 06:10

Pykih


1 Answers

By the specific flavor of your error, I am guessing that "authenticate_user" is called as part of a "create" action.

If that is the case, I believe the answer I provided here will help you as well.

Assuming, however, that this is part of creating an authenticated session, meaning there is no actual location for the newly created "resource", I would supply nil for the response location, as in:

...
respond_with(error, :status => 401, :location => nil)
...

That will make more sense once you have a look at the linked answer. If it still doesn't make sense, I'll be happy to clarify.

like image 158
Aubergine Avatar answered Sep 29 '22 06:09

Aubergine