2010-10-01 13 views
8

La vista:Rails 3 Ayudantes Forma: UTF-8 y otros campos ocultos

<%= form_for :blog_post do |f| %> 
    <ul> 
    <li> 
     <%= f.label :title %> 
     <%= f.text_field :title, :type => 'text', :id => 'title', :size => '', :limit => '255' %> 
    </li> 

    </ul> 
<% end %> 

<!DOCTYPE html> 
    <html> 
    <head> 
     <title>LevihackwithCom</title> 
     <script src="/javascripts/prototype.js?1285902540" type="text/javascript"></script> 
     <script src="/javascripts/effects.js?1285902540" type="text/javascript"></script> 
     <script src="/javascripts/dragdrop.js?1285902540" type="text/javascript"></script> 
     <script src="/javascripts/controls.js?1285902540" type="text/javascript"></script> 
     <script src="/javascripts/rails.js?1285902540" type="text/javascript"></script> 
     <script src="/javascripts/application.js?1285902540" type="text/javascript"></script> 
     <meta name="csrf-param" content="authenticity_token"/> 
     <meta name="csrf-token" content="UnhGSHHanJHfgJYhnksqJ1bfq3W+QEU2GJqLAMs2DmI="/> 
    </head> 

    <body> 

    <form accept-charset="UTF-8" action="/blog_post/new" method="post"> 
     <div style="margin:0;padding:0;display:inline"> 
     <input name="utf8" type="hidden" value="&#x2713;" /> 
     <input name="authenticity_token" type="hidden" value="UnhGSHHanJHfgJYhnksqJ1bfq3W+QEU2GJqLAMs2DmI=" /> 
     </div> 
     <ul> 
     <li> 
      <label for="blog_post_title">Title</label> 
      <input id="title" limit="255" name="blog_post[title]" size="" type="text" /> 
     </li> 
     </ul> 
    </form> 

    </body> 
    </html> 

estoy jugando con forma ayudantes. El código anterior muestra mi archivo de vista así como el HTML que genera. ¿Qué pasa con el terrible div lleno de CSS en línea repleto de campos ocultos que no pedí explícitamente? ¿Qué configuraciones hacen que se generen estos campos? ¿Hay alguna manera de eliminar el CSS en línea?

Respuesta

18

Estos campos se generan en formas carriles de robustez:

utf8=✓

campo oculto El UTF-8 asegura que los valores del formulario se envía como UTF8. Lo hace asegurando que se envíe al menos un carácter UTF8 en el formulario. La mayoría de los navegadores respetan la codificación del documento y tratan los valores del formulario de la misma manera, pero hay un navegador que tiene un problema. Por lo tanto, utf8 obtiene una marca de verificación.

El authentity_token está ahí para evitar la falsificación de solicitudes entre sitios.

Se generan campos ocultos similares para las casillas de verificación. Como las casillas de verificación sin marcar no se envían al servidor, un campo oculto asegura que se envíe un valor "0" (falso): esto es útil cuando se tiene una matriz de casillas de verificación.

Estos campos se envuelven en un div con estilos en línea para garantizar que no rompan el diseño. Podrías hurgar en el código fuente del helper y anularlo, pero no lo recomendaría: es mínimamente intrusivo, y está ahí por una razón.

+2

Pero la CSS en línea no es correcto. Es feo y no sigue los estándares web. ¿Hay otros desarrolladores que hayan sentido esta frustración con Ruby y hayan encontrado una solución? –

+3

Sí, es un compromiso, pero usar CSS en línea juiciosamente no va en contra de los estándares web. De otro modo, dependerá de las hojas de estilo: debe ocultarse correctamente independientemente de cualquier otra cosa en el proyecto. –

+0

Parece que la envoltura div se eliminó en ~ 4.1 * Elimina envoltura div con estilos en línea para campos de formulario ocultos. Estamos abandonando el cumplimiento estricto de HTML 4.01 y XHTML dado que las etiquetas de entrada directamente dentro de un formulario son HTML5 válidas, y la ausencia de estilos en línea ayuda a validar la Política de seguridad de contenido. * Https://github.com/rails/rails/blob/ed9b23d8986a2d4025913e7c56f353a579ab0189 /actionview/CHANGELOG.md –

Cuestiones relacionadas