Estoy escribiendo un modelo que maneja la entrada del usuario desde un área de texto. Siguiendo el consejo de http://blog.caboo.se/articles/2008/8/25/sanitize-your-users-html-input , estoy limpiando la entrada en el modelo antes de guardarla en la base de datos, usando before_validate llamar de vuelta.
Las partes relevantes de mi modelo se ven así:
include ActionView::Helpers::SanitizeHelper
class Post < ActiveRecord::Base {
before_validation :clean_input
...
protected
def clean_input
self.input = sanitize(self.input, :tags => %w(b i u))
end
end
No hace falta decir que esto no funciona. Recibo el siguiente error cuando intento guardar una publicación nueva.
undefined method `white_list_sanitizer' for #<Class:0xdeadbeef>
Aparentemente, SanitizeHelper crea una instancia de HTML :: WhiteListSanitizer, pero cuando lo mezclo con mi modelo no puede encontrar HTML :: WhiteListSanitizer. ¿Por qué? ¿Qué puedo hacer al respecto para solucionarlo?
fuente
stack level too deep
. Está en un método before_save.Esto le brinda solo el método auxiliar sin los efectos secundarios de cargar cada método ActionView :: Helpers en su modelo:
fuente
Esto funciona mejor para mí:
Sencillo:
Avanzar:
Fuente: http://makandracards.com/makandra/1307-how-to-use-helper-methods-inside-a-model
fuente
ApplicationController.master_helper_module
no existe más en los carriles 3 y 4 que aparece. SinApplicationController.helpers
embargo, es bueno.Para acceder a los ayudantes desde sus propios controladores, simplemente use:
fuente
ApplicationController.helpers.order_number(@order)
. Eso significa que seorder_number
ubicó elOrder Helper
No recomendaría ninguno de estos métodos. En su lugar, colóquelo dentro de su propio espacio de nombres.
fuente
Si desea utilizar el
my_helper_method
interior de un modelo, puede escribir:fuente