Ruby-on-rails: Ayuda con render: layout => false
-
30-09-2019 - |
Pregunta
Estoy intentando acceder a un recurso de aplicación de los carriles de una API (se envía una solicitud GET application / xml) y me gustaría no tener que analizar el archivo XML.
En mis recursos controlador Tengo el siguiente:
def get_resource
@my_resource = Resources.new
render :xml => @my_resource
end
que produce un archivo XML como se esperaba. Si lo cambio por:
render :layout => false
mi API informa de una "plantilla que falta" error. También he intentado lo siguiente:
render :xml => @identity, :layout => false
Sin embargo, la página se representa de todos modos. ¿Cuál es la manera correcta de hacer esto?
Solución
Al representar: xml, que no utiliza un diseño, ya que no utiliza ningún tipo de plantilla tampoco. Especificando: layout => false, le dice a los carriles para buscar una plantilla que no existe
.Ahora, si usted no desea analizar un archivo XML, entonces usted tiene algunas alternativas. O bien:
render :json => @my_resource
o
render :text => "My resource name is: #{@my_resource.name}" # Whatever you want
Todo depende de cómo desea que el resultado a la mirada, lo que su API espera recibir. Así que si usted no encuentra nada de esto útil, dar un ejemplo de cómo desea que la respuesta a la mirada.
Otros consejos
def get_resource
@my_resource = Resources.new
respond_to do |wants|
wants.xml { render :xml => @my_resource }
wants.html { render :layout => false }
end
end
Leer este artículo: http://tokumine.wordpress.com/2009/09/13/how-does-respond_to-work-in-the-rails-controllers/