form_for
похоже, игнорирует любые «лишние» атрибуты, такие как data-foo
атрибут или class
переданные, как options
во втором аргументе.
= form_for @user, {:url => 'foo', :class => 'x', 'data-bar' => 'baz' } do |f|
# ...
Результатом является <form>
тег без x
класса или data-bar
атрибута.
Что исправить?
Или как я могу получить FormBuilder
экземпляр без использования form_for
?
ruby-on-rails
ruby-on-rails-3
Алан Х.
источник
источник
= form_for @user, :html => {'class' => 'x'} do |f|
.class
должен быть символ вместо строки.Rails 4.0.3, Ruby 2.1.0p0 -> у меня это сработало =>
<%= form_for(@contact, :html => {:class => 'form_height'}) do |f| %><% if @contact.errors.any? %>
источник
У меня была та же проблема, но я был озадачен тем, что другая форма в другом месте моего приложения работала нормально.
Я понял, что случайно добавил form_for внутри другого form_for, который после удаления вылечил проблему.
Во-вторых, я должен добавить, что этот синтаксис у меня работает в Rails 4.2:
<%= form_for @type, html: {class: "form-horizontal"} do |f| %>
Я считаю, что это предпочтительнее, чем другие ответы здесь (которые, возможно, были основаны на более старой версии Rails).
источник
В большинстве хелперов последний аргумент - это хэш параметров HTML для элемента.
= form_for @user, :html => {:class => 'x', 'data-bar' => 'baz'} %>
Вы также можете проверить другие альтернативы в документации ActionsView :: Helpers :: FormHelper.
источник
Я безуспешно пробовал это, но нашел решение. Пользуюсь рельсами 4.1.6.
Это не сработало
= form_for @user, :html => {:class => 'x', 'data-bar' => 'baz'} %>
Это сделало
= form_for @user, html: {:class => 'x', 'data-bar' => 'baz'} %>
обратите внимание на разницу с опцией html, надеюсь, это поможет
источник
= form_for(:user, :url => login_path, html: {:class => 'login_form'}) do |f| %>
Это был единственный способ, которым мой код применил класс, иначе он просто игнорировал его.