What does `:location => ...` and `head :ok` mean in the 'respond_to' format statement?
Asked Answered
S

1

45

I am using Ruby on Rails 3 and I would like to know what the :location => ... and head :ok statements mean in following code, how they work and how I can\should use those.

respond_to do |format|
    format.xml  { render :xml => @user, :status => :created, :location => @user }
end

respond_to do |format|
    format.xml  { head :ok }
end
Spectrogram answered 6/3, 2011 at 22:35 Comment(0)
V
76
  1. render ... :location => @user will set the HTTP location header to inform the client of the location of the newly created resource (that is, its URL)

  2. head :ok sets render to return an empty response (so just the header, no body) with status 200. head :ok is shorthand for render nothing: true, status: :ok.
    Here's a list of all the :status options you can use for setting the appropriate status code.

Viniculture answered 6/3, 2011 at 22:45 Comment(3)
so what does the client do with the newly created user location?Edh
@Edh Well whatever they want to do. Precise semantics of "location of a newly-created resource" depends on application. In the example above such URL can be used to show/edit user profile.Viniculture
@Viniculture I am using url in location, along with head :ok, that needs a parameter. But i get the parameter's value as undefined. id = comment.assignment.id head :ok, location: assignment_lessons_path(id) Could you please help me here? Thanks. :)Impassive

© 2022 - 2024 — McMap. All rights reserved.