form_for
parece ignorar cualquier atributo 'extra' como un data-foo
atributo o class
pasado como options
en su segundo argumento.
= form_for @user, {:url => 'foo', :class => 'x', 'data-bar' => 'baz' } do |f|
# ...
La salida es una <form>
etiqueta sin x
clase ni data-bar
atributo.
¿Cuál es la solución?
O, ¿cómo puedo tomar una FormBuilder
instancia sin usar form_for
?
ruby-on-rails
ruby-on-rails-3
Alan H.
fuente
fuente
= form_for @user, :html => {'class' => 'x'} do |f|
.class
debe 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.