webentwicklung-frage-antwort-db.com.de

Rails 4 - Wie rendere ich JSON unabhängig vom gewünschten Format?

Ich möchte, dass ein Rails-Controller (eigentlich alle eine API) JSON immer und immer rendert.

Ich möchte nicht, dass Rails "route not found" zurückgibt, oder dass versucht wird, keine HTML-Vorlage zu finden, oder dass 406 zurückgegeben wird. Ich möchte nur, dass JSON automatisch und immer gerendert wird, z. aus einer RABL- oder JBuilder-Ansicht.

Ist das möglich? Verwandte Fragen scheinen Antworten zu haben, die die oben genannten Nachteile haben.

17
Zach

Sie können in Ihrem Controller einen before_filter hinzufügen, um das Anforderungsformat auf json festzulegen:

# app/controllers/foos_controller.rb

before_action :set_default_response_format

protected

def set_default_response_format
  request.format = :json
end

Dadurch wird das gesamte Antwortformat auf json gesetzt. Wenn Sie andere Formate zulassen möchten, können Sie beim Festlegen von request.format das Vorhandensein des Parameters format überprüfen, z. B .:

def set_default_response_format
  request.format = :json unless params[:format]
end
30
vee

Sie können format.any verwenden:

def action
  respond_to do |format|
    format.any { render json: your_json, content_type: 'application/json' }
  end
end
11
Peleg

Ich hatte ein ähnliches Problem, aber mit der Erweiterung ".js". Um das Problem zu lösen, habe ich in der Ansicht Folgendes getan: <%= params.except!(:format) %> <%= will_paginate @posts %>

0
ruslan

Es ist nur:

render formats: :json
0
hlcs