form_forparece ignorar cualquier atributo 'extra' como un data-fooatributo o classpasado como optionsen su segundo argumento.
= form_for @user, {:url => 'foo', :class => 'x', 'data-bar' => 'baz' } do |f|
# ...
La salida es una <form>etiqueta sin xclase ni data-baratributo.
¿Cuál es la solución?
O, ¿cómo puedo tomar una FormBuilderinstancia sin usar form_for?
ruby-on-rails
ruby-on-rails-3
Alan H.
fuente
fuente

= form_for @user, :html => {'class' => 'x'} do |f|.classdebe ser un símbolo en lugar de una cadena.Rails 4.0.3, Ruby 2.1.0p0 -> esto funcionó para mí =>
<%= form_for(@contact, :html => {:class => 'form_height'}) do |f| %><% if @contact.errors.any? %>fuente
Tuve el mismo problema, pero me sorprendió que otro formulario en otra parte de mi aplicación funcionara bien.
Me di cuenta de que había agregado accidentalmente un form_for dentro de otro formulario_for que una vez eliminado solucionó el problema.
En segundo lugar, debo agregar que esta sintaxis me funciona en Rails 4.2:
<%= form_for @type, html: {class: "form-horizontal"} do |f| %>Lo encuentro preferible a la sopa de puntuación de las otras respuestas aquí (que quizás se basaron en una versión anterior de Rails).
fuente
En la mayoría de los ayudantes, el último argumento es un hash de opciones html para el elemento.
= form_for @user, :html => {:class => 'x', 'data-bar' => 'baz'} %>También puede consultar otras alternativas en la documentación ActionsView :: Helpers :: FormHelper
fuente
Intenté lo anterior sin suerte, pero encontré una solución. Estoy usando rieles 4.1.6.
Esto no funcionó
= form_for @user, :html => {:class => 'x', 'data-bar' => 'baz'} %>Esto hizo
= form_for @user, html: {:class => 'x', 'data-bar' => 'baz'} %>note la diferencia con la opción html, espero que esto ayude
fuente
= form_for(:user, :url => login_path, html: {:class => 'login_form'}) do |f| %>Esta era la única forma en que mi código aplicaría la clase, de lo contrario, simplemente la ignoraba.