ruby-on-rails - tutorial - rails render with params
Rails 4-¿Cómo representar JSON independientemente del formato solicitado? (4)
Me gustaría que un controlador Rails (todos ellos, en realidad, es una API) rinda siempre a JSON.
No quiero que Rails devuelva "ruta no encontrada", o trate de no encontrar una plantilla HTML, o que devuelva 406. Sólo quiero que automáticamente y siempre muestre JSON, por ejemplo, desde una vista RABL o JBuilder.
es posible? Las preguntas relacionadas parecen tener respuestas que tienen los inconvenientes mencionados anteriormente.
Por supuesto:
before_filter :always_json
protected
def always_json
params[:format] = "json"
end
Probablemente deberías poner esto en un controlador raíz para tu API.
Puedes usar format.any
:
def action
respond_to do |format|
format.any { render json: your_json, content_type: ''application/json'' }
end
end
Tuve un problema similar pero con la extensión ''.js''. Para resolverlo, hice lo siguiente en la vista: <%= params.except!(:format) %> <%= will_paginate @posts %>
Puede agregar un before_filter
en su controlador para configurar el formato de solicitud a json
:
# app/controllers/foos_controller.rb
before_action :set_default_response_format
protected
def set_default_response_format
request.format = :json
end
Esto establecerá todo el formato de respuesta a json
. Si desea permitir otros formatos, puede verificar la presencia del parámetro de format
al configurar request.format
, por ejemplo:
def set_default_response_format
request.format = :json unless params[:format]
end