tutorial rails que ejemplos descargar curso caracteristicas aprender ruby-on-rails forms unicode

que - ¿Para qué sirve el_snowman param en las formas de Ruby on Rails 3?



ruby on rails que es (2)

En Ruby on Rails 3 (actualmente usando Beta 4), veo que cuando se usa form_tag o form_for helpers hay un campo oculto llamado _snowman con el valor de ☃ ( Unicode / x9731) que aparece.

Entonces, ¿para qué es esto?


Este parámetro se agregó a los formularios para forzar a Internet Explorer (5, 6, 7 y 8) a codificar sus parámetros como unicode.

Específicamente, este error puede activarse si el usuario cambia la codificación del navegador a Latin-1. Para entender por qué un usuario decidiría hacer algo aparentemente tan loco, echa un vistazo a esta búsqueda de Google . Una vez que el usuario ha puesto el sitio web en modo Latin-1, si utilizan caracteres que pueden entenderse como Latin-1 y Unicode (por ejemplo, é o ç, comunes en los nombres), Internet Explorer los codificará en latín -1.

Esto significa que si un usuario busca "Ché Guevara", aparecerá incorrectamente en el lado del servidor. En Ruby 1.9, esto dará como resultado un error de codificación cuando el texto inevitablemente se abre paso en el motor de expresiones regulares. En Ruby 1.8, dará como resultado resultados rotos para el usuario.

Al crear un parámetro que IE solo puede entender como un carácter unicode, estamos obligando a IE a mirar el atributo accept-charset, que luego le dice que codifique todos los caracteres como UTF-8, incluso aquellos que pueden codificarse en Latin-1.

Tenga en cuenta que en Ruby 1.8, es extremadamente trivial obtener datos Latin-1 en su base de datos UTF-8 (ya que nada en toda la pila comprueba que los bytes que el usuario envió en cualquier punto sean caracteres UTF-8 válidos). Como resultado, es extremadamente común que las aplicaciones de Ruby (y las aplicaciones de PHP, etc.) muestren este error de usuario y, por lo tanto, es muy común que los usuarios intenten cambiar la codificación como medida paliativa.

Dicho todo esto, cuando escribí este parche, no me di cuenta de que el nombre del parámetro aparecería alguna vez en un lugar orientado al usuario (lo hace con los formularios que usan la acción GET, como los formularios de búsqueda). Como lo hace, _e nombre de este parámetro a _e y utilizaremos un carácter unicode de aspecto más inofensivo.


Esto está aquí para admitir Internet Explorer 5 y alentarlo a usar UTF-8 para sus formularios.

El mensaje de compromiso que se ve here detalla de la siguiente manera:

Soluciona varios problemas conocidos de codificación web:

  • Especifique accept-charset en todos los formularios. Todos los navegadores recientes, así como IE5 +, usarán la codificación especificada para los parámetros del formulario
  • Desafortunadamente, IE5 + no mirará accept-charset a menos que al menos un caracter en los valores del formulario no esté en el juego de caracteres de la página. Dado que el usuario puede anular el valor predeterminado
    charset (que Rails establece en UTF-8), proporcionamos una entrada oculta que contiene un carácter Unicode, obligando a IE a mirar el accept-charset.
  • Ahora que la gran mayoría de las entradas web es UTF-8, configuramos los parámetros de entrada a UTF-8. Esto eliminará muchos casos de codificaciones incompatibles entre ASCII-8BIT y
    UTF-8.
  • Puede ignorar params de forma segura [: _ muñeco de nieve]

En resumen, puede ignorar este parámetro de forma segura.

Aún así, no estoy seguro de por qué estamos apoyando tecnologías antiguas como Internet Explorer 5. Parece que no es una decisión de Ruby on Rails si me preguntas.