Before filter?

Buenas, estoy usando ajax scaffold para mis tablas y tengo un problema.

Para que se vean bien las tildes y eso, en application.rb tengo:

before_filter :configure_charsets
def configure_charsets
@headers[“Content-Type”] = “text/html; charset=iso-8859-1”
suppress(ActiveRecord::StatementInvalid) do
ActiveRecord::Base.connection.execute ‘SET NAMES latin1’
end
end

Y el código que genera ajax scaffold en users_controller.rb es:

before_filter :update_params_filter

def update_params_filter
update_params :default_scaffold_id => “user”, :default_sort => nil,
:default_sort_direction => “asc”
end

El caso es que cuando pincho en crear nuevo, si no pongo el
before_filter
:configure_charsets, se abre una capa con el formulario de nuevo
usuario,
pero al ponerlo, no se abre y no hay ningún error ni en el log ni en
ningún
sitio.

Entonces está claro que el error es por el before_filter
:configure_charsets.

¿Puede ser porque el controlador haga 2 before filter?

Si no es por eso, alguna sugerencia?

Gracias

Si no es por eso, alguna sugerencia?

¿Por qué no declaras la codificación en la cabecera del archivo HTML que
genera
la vista en lugar de en las cabeceras HTTP?

Ya lo hago. El problema es que lo que coje de la base de datos, lo coje
mal
si no pongo el before_filter :configure_charsets.

Viendo un poco más, creo que es problema del rjs. Porque sólo pasa si
tiene
que “renderizar” un rjs.

Luis V. wrote:

Ya lo hago. El problema es que lo que coje de la base de datos, lo coje
mal
si no pongo el before_filter :configure_charsets.

Viendo un poco más, creo que es problema del rjs. Porque sólo pasa si
tiene
que “renderizar” un rjs.

Hola

El problema es que lo que haces, solo lo debes hacer en el caso de que
la petición sea html, yo cuando es via ajax la cabecera debería ser
“text/javascript”

Debes usar after filter :

after_filter :set_charset
def set_charset
content_type = @headers[“Content-Type”] || “text/html”
if /^text//.match(content_type)
@headers[“Content-Type”] = “text/html; charset=iso-8859-1”
end
end

Te mando unos links donde se explica exto un poco mejor.

http://wiki.rubyonrails.com/rails/pages/HowToUseUnicodeStrings
http://wiki.rubyonrails.org/rails/pages/HowtoSetDefaultEncoding
http://newbieonrails.topfunky.com/articles/2006/02/01/rjs-and-content-type-header

Un saludo
Juan M. Cervera

Muchas gracias, así me ha funcionado. Y gracias también por los links.

Un saludo