2016-04-26 6 views
1

Ich erhalte immer einen ActionView :: MissingTemplate Fehler beim Versuch, JSON in meinem Rails 5 API zu rendern. Ich möchte nur das reine JSON rendern, ohne einen Jbuilder oder eine andere Ansicht. Kann jemand helfen?ActionView :: MissingTemplate, Rails 5 API mit JSON

thing_controller.rb:

class Api::ThingController < ApplicationController 
    def thing 
    render json: {error: 'This is my error message.'}, status: 422 
    end 
end 

thing_controller_test.rb:

require 'test_helper' 
class Api::ThingControllerTest < ActionDispatch::IntegrationTest 
    test "the truth" do 
    get '/api/thing' 
    assert_response 422 
    end 
end 

vollständige Fehlermeldung:

Error: Api::ThingControllerTest#test_the_truth: ActionView::MissingTemplate: Missing template api/thing/thing, application/thing with {:locale=>[:en], :formats=>[:json], :variants=>[], :handlers=>[:raw, :erb, :html, :builder, :ruby, :jbuilder]}.

application_controller.rb:

class ApplicationController < ActionController::API 
    include ActionController::Caching 
    include ActionController::ImplicitRender # want implicit view rendering for JBuilder 

    before_action :add_cors_headers 


    def options 
    head(:ok) if request.request_method == "OPTIONS" 
    end 
+0

vielleicht versuchen 'to_json' auf dem Hash-Aufruf, den Sie als JSON sind Rückkehr? –

+0

versuchen 'format.json {render json: ...}' –

+0

versuchten beide der oben genannten, funktionierte nicht. Trotzdem danke! –

Antwort

1

Dies ist verwandt mit an issue in Rails 5 Beta ActionController :: API und Jbuilder. Es sieht so aus, als ob es durch diese pull request behoben wurde.

Derweil können Sie Klartext zurückzukehren und den Inhaltstyp, etwa so:

render plain: {error: 'This is my error message.'}.to_json, status: 422, content_type: 'application/json' 
+0

Danke, das ist sehr hilfreich. – Jake

Verwandte Themen