with tutorial scotch rails only from ruby-on-rails json ruby-on-rails-4 rabl

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