form_for
wydaje się ignorować wszelkie „dodatkowe” atrybuty, takie jak data-foo
atrybut, lub class
przekazywane jak options
w drugim argumencie.
= form_for @user, {:url => 'foo', :class => 'x', 'data-bar' => 'baz' } do |f|
# ...
Dane wyjściowe to <form>
znacznik bez x
klasy ani data-bar
atrybutu.
Jaka jest poprawka?
Albo jak mogę pobrać FormBuilder
instancję bez używania form_for
?
ruby-on-rails
ruby-on-rails-3
Alan H.
źródło
źródło
= form_for @user, :html => {'class' => 'x'} do |f|
.class
powinien być symbolem zamiast ciągu.Rails 4.0.3, Ruby 2.1.0p0 -> to działało dla mnie =>
<%= form_for(@contact, :html => {:class => 'form_height'}) do |f| %><% if @contact.errors.any? %>
źródło
Miałem ten sam problem, ale byłem zdziwiony, że inny formularz w innym miejscu w mojej aplikacji działa dobrze.
Zdałem sobie sprawę, że przypadkowo dodałem form_for wewnątrz innego form_for, który po usunięciu rozwiązał problem.
Po drugie, powinienem dodać, że taka składnia działa u mnie w Railsach 4.2:
<%= form_for @type, html: {class: "form-horizontal"} do |f| %>
Uważam, że jest to lepsze od zupy interpunkcyjnej innych odpowiedzi tutaj (które być może były oparte na starszej wersji Rails).
źródło
W większości helperów ostatni argument jest skrótem opcji html dla elementu.
= form_for @user, :html => {:class => 'x', 'data-bar' => 'baz'} %>
Możesz również sprawdzić inne alternatywy w dokumentacji ActionsView :: Helpers :: FormHelper
źródło
Wypróbowałem powyższe bez powodzenia, ale znalazłem rozwiązanie. Używam szyn 4.1.6.
To nie zadziałało
= form_for @user, :html => {:class => 'x', 'data-bar' => 'baz'} %>
To zrobił
= form_for @user, html: {:class => 'x', 'data-bar' => 'baz'} %>
Zauważ różnicę z opcją HTML, mam nadzieję, że to pomoże
źródło
= form_for(:user, :url => login_path, html: {:class => 'login_form'}) do |f| %>
To był jedyny sposób, w jaki mój kod zastosowałby tę klasę, w przeciwnym razie po prostu ją zignorował.