¿Existe algo así como:RoR: ¿dos formatos de respuesta con el mismo bloque?
respond_to do |format|
format.html || format.xml do
#big chunk of code
end
end
me gustaría hacer eso por el bien de SECO.
¿Existe algo así como:RoR: ¿dos formatos de respuesta con el mismo bloque?
respond_to do |format|
format.html || format.xml do
#big chunk of code
end
end
me gustaría hacer eso por el bien de SECO.
respond_to realidad le permite especificar su bloque común para diferentes formatos utilizando cualquiera:
format.any(:js, :json) { #your_block }
En realidad, creo que esta es la única respuesta realmente útil. No pude ejecutar la respuesta "Proc" _y_ esta es definitivamente más corta y limpia. ¡Tks! – fenton
Además, 'format.all' es un sinónimo de' format.any' si tiene más sentido para usted. –
cuando
respond_to do |format|
format.html do
#block
end
format.xml do
#block
end
end
o
respond_to do |format|
format.html { #block }
format.xml { #block }
end
usted está tomando ventaja de ruby blocks, que se evalúan como Proc. Por lo tanto, podría hacer
respond_to do |format|
bcoc = Proc.new do
# your big chunk of code here
end
format.html bcoc
format.xml bcoc
end
pero tal vez podría trasladar parte de esa lógica a su estructura de datos?
Ty Alex, voy a ir con esta solución ya que puedo restringir el formato .js tiene acceso al código de format.html/xml. – miligraf
Los bloques de Ruby no son Procs. Se pueden convertir de ida y vuelta, pero no son lo mismo. –
@MatthewRatzloff Mi comprensión es que la sintaxis de bloque es exactamente eso: la sintaxis de ruby más común para definir un cierre. Ver [https://gist.github.com/3757938](https://gist.github.com/3757938). ¿Qué son ellos entonces? Feliz de ser corregido. –
Se puede utilizar un formato como el siguiente:
class PeopleController < ApplicationController
respond_to :html, :xml, :js
def index
@people = Person.find(:all)
respond_with(@people) do |format|
format.html
format.xml
format.js { @people.custom_code_here }
end
end
end
que lograría lo que está buscando, si usted tiene una situación que es más complejo que me haga saber. Consulte este método article on the respond_with para obtener más ayuda.
Perdóname por responder hasta ahora, la cosa es que: quiero formatear.html y format.xml compartir el mismo grupo de código, pero también tengo format.js que no quiero que tenga acceso al código de format.html o format.xml (que en este caso sería el mismo). – miligraf
Utilice la versión modificada del código anterior. Si tiene alguna pregunta, hágamelo saber. –
por lo qué formato quieres el bloque para regresar - HTML o XML? Puede poner toda la lógica fuera del responder_a y luego solo formatearlo html/xml al final - ¿eso ayuda? –
Consulte http://stackoverflow.com/a/2430682/265940 para obtener una mejor respuesta utilizando format.any (: html,: xml) {...} –