Usando ROAR (https://github.com/apotonick/roar) y sin utilizar ActiveRecord o cualquier vista de las plantillas que quiero:carriles 3 y JSON: procesador predeterminado pero el tipo MIME personalizado
- utilice el predeterminado JSON Rederer pero mi propia tipo MIME para rendir JSON con respond_with
- utilice el valor predeterminado analizador JSON pero mi propio tipo MIME poner entradas de la POST-cuerpo en el hash params.
config/inicializadores/mime_types.rb:
Mime::Type.register "application/vnd.xxx-v1+json" , :xxx_v1
controladores/api/base_controller.rb
class Api::V1::BaseController < ActionController::Base
respond_to :xxx_v1
ActionController.add_renderer :xxx_v1 do |obj, options|
json = obj.to_json
self.content_type ||= Mime::Type.lookup('application/vnd.xxx-v1+json')
self.response_body = json
end
end
controladores/api/user_controller.rb:
class Api::V1::UsersController < Api::V1::BaseController
def index
respond_with User.all
end
end
OBTENER http://domain/users Aceptar application/vnd.xxx-v1
ERROR: Falta la plantilla api/v1/users/index, api/v1/base/index con {: handlers => [: erb,: builder],: formats => [: xxx_v1],: locale => [: en,: es]}
Después de leer varios mensajes como Rails Custom Renderer o rails 3 response format and versioning using vendor MIME type in the Accept header todavía no puedo conseguir que funcione ..
- === == pequeña actualización = -
Cuando uso renderizar directamente en el controlador, ¡está funcionando! Siempre problemas con respond_with ...
render :xxx_v1 => User.all
Esto responde a una pregunta diferente, aunque interesante, que la planteada anteriormente, es decir, responde "cómo analizar" mientras que la pregunta anterior pregunta "cómo renderizar". –
Pero mi pregunta también incluye "usar el analizador JSON predeterminado pero mi propio tipo mime"; D – Ginkgochris