How to send http-status using JBuilder Gem How to send http-status using JBuilder Gem json json

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.