Использовать форму Rails для установки пользовательских классов, атрибутов на элементе?
form_for
Кажется, игнорируют любые "дополнительные" атрибуты, такие как data-foo
атрибут или class
передается как options
во втором аргументе.
= form_for @user, {:url => 'foo', :class => 'x', 'data-bar' => 'baz' } do |f|
# ...
выход <form>
тег не x
класса или .
что исправить?
или, как я могу взять FormBuilder
экземпляра без использования form_for
?
5 ответов:
использовать
: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| %>
Я нахожу его предпочтительным для пунктуации-супа других ответов здесь (которые, возможно, были основаны на более старых рельсах версия.)
в большинстве помощников последний 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, надеюсь, что это поможет