How to send http-status using JBuilder Gem
This works:
controller
def some_action render status: :bad_requestend
some_action.jbuilder
json.something "test"
Try rendering jbuilder to string then set the status... works in Rails 4.1.4
jstr = render_to_string( template: 'api/shared/index.jbuilder', locals: { nodes: @nodes})respond_to do |format| format.html format.json { render json: jstr, status: :bad_request }end
Else following also works
format.json { render template: 'api/shared/index.jbuilder', status: 404 }
I don't know about Rails 3.0, but I was able to provide the appropriate status by simply adding a respond_to
block to the controller action. As an example, I have an create
like so:
def create # ... create logic respond_to do |format| format.html format.json { render status: :created, success: true }end
The above code sets my status code to 201 and renders app/views/orders/create.json.jbuilder
Hope that helps.