Ответ 1
Используйте хеш :html
:
= form_for @user, :html => {:class => 'x', 'data-bar' => 'baz'} do |f|
или
= form_for @user, :html => {class: 'x', data: { bar: 'baz' } } do |f|
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
?
Используйте хеш :html
:
= form_for @user, :html => {:class => 'x', 'data-bar' => 'baz'} do |f|
или
= form_for @user, :html => {class: 'x', data: { bar: 'baz' } } do |f|
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).
В основном помощники, последний аргумент arg - это хэш 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, надеюсь, что это поможет