¿Hay alguna manera de compartir una matriz entre los métodos del controlador y almacenarla hasta que la página se recargue o llame al método de otro controlador? Algunos métodos deberían cambiar la matriz.Cómo pasar valores entre los métodos del controlador
Respuesta
Si desea compartir el valor a través de los métodos de una misma instancia de controlador de entonces, declarar una variable de instancia:
class BarsController < UsersController
before_filter :init_foo_list
def method1
render :method2
end
def method2
@foo_list.each do | item|
# do something
end
end
def init_foo_list
@foo_list ||= ['Money', 'Animals', 'Ummagumma']
end
end
Si desea compartir el valor a través de dos controladores withn una sesión, a continuación:
class BarsController < UsersController
before_filter :init_foo_list
def method1
render :controller => "FoosController", :action => "method2"
end
def init_foo_list
params[:shared_param__] ||= ['Money', 'Animals', 'Ummagumma']
end
end
class FoosController < UsersController
def method2
params[:shared_param__].each do | item|
# do something
end
end
end
Dale un nombre único a la clave compartida parámetro con el fin de evitar la colisión con las claves existentes.
Otra opción es almacenar el conjunto compartido en el anuncio de la sesión eliminarlo antes del renderizado final.
puede usar caché de raíles.
Rails.cache.write("list",[1,2,3])
Rails.cache.read("list")
¡Tu camino parece estar funcionando! No encontré buenos documentos para Rails.cache, ¿me puede dar un enlace, por favor? – Antiarchitect
Pero, ¿qué sucede cuando diferentes sesiones tienen valores diferentes? –
Yo segundo 'Tony'. A menos que garantice la exclusividad del nombre 'list' en la sesión, esta solución fallará durante las solicitudes simultáneas. –
No estoy seguro de si mi respuesta está cerca de su requerimiento, pero esto es lo que hago si quiero obtener el valor de un objeto/modelo que se capta en una acción del controlador y la base sobre la que el valor Necesito buscar otros valores en otra acción del controlador. hago uso de variables de clase y los usen durante mi acción del controlador
por ejemplo:
@pages=Post.find.all`
@@[email protected](any manipulations)
ahora @@my_vales
se puede utilizar en cualquier acción de ese controlador ..
creo que sirve ...
- 1. ¿Cómo pasar valores del controlador para ver en asp.net?
- 2. Grails métodos controlador
- 3. ¿Cómo pasar valores (parámetros) entre páginas XAML?
- 4. ambigüedad entre los métodos
- 5. Windows Phone 7 - pasar valores entre páginas
- 6. Optional.absent() Los valores a los métodos concisa
- 7. ¿Cómo pasar mensajes de error entre los controladores Grails?
- 8. Cómo pasar valores entre dos páginas en WPF
- 9. ¿Cómo puedo pasar valores entre Actividades en Android?
- 10. ¿Cómo pasar variables a los métodos de ranura en QT?
- 11. Cómo pasar mejor los métodos a los métodos de la misma clase
- 12. Cómo pasar valores a plantillas en tornado
- 13. Pasar varios métodos (¿delegar?)
- 14. impulso-pitón seleccionar entre los métodos sobrecargados
- 15. Pautas para llamar a los métodos del controlador en los módulos auxiliares?
- 16. ¿Cómo "mapa" entre 3 valores?
- 17. Cambiando los valores de las variables en los métodos, Java
- 18. ¿Encontrar valores mínimos entre los 5 enteros?
- 19. ¿cómo se relacionan los métodos has_field() con los valores predeterminados en protobuf?
- 20. Cómo elegir entre dos métodos del mismo nombre en Java
- 21. ¿cómo pasamos los datos del controlador para verlos en zend?
- 22. CakePHP paginación - ¿cómo veo los valores Paginator desde dentro del controlador?
- 23. Pasar valores a onclick
- 24. Diferencia entre los métodos EventLog.WriteEntry y EventLog.WriteEvent
- 25. Diferencia entre los métodos Map.put y Map.putAll?
- 26. Comunicación entre scripts | Tres métodos
- 27. ¿Cómo inicializar los valores del atributo 'attr_accessor'?
- 28. Cómo pasar un valor booleano entre los intentos
- 29. cómo pasar valores personalizados en uploadify
- 30. Cómo pasar valores enumerados a un servicio web
attr_accessor significa que puedo acceder a esta variable en toda la instancia de la clase. Hmm ... ¡Intentaré esto! ¡Gracias! – Antiarchitect
La primera manera no funciona. foo_list es nil en method2 Pero el primer método se llama antes del segundo. ¿Y cómo puedo definir foo_list no en métodos sino en inicializar? def initialize self.foo_list = ['Money', 'Animals', 'Ummagumma'] end De esta manera o de alguna otra manera? – Antiarchitect
Establezca el valor en un 'before_filter' –