使用Rails的form_for,但在<form>元素上设置自定义类,属性?
form_for
似乎忽略任何“额外的”属性,比如在第二个参数中作为options
传递的data-foo
属性或class
。
= form_for @user, {:url => 'foo', :class => 'x', 'data-bar' => 'baz' } do |f| # ...
输出是一个没有x
类或data-bar
属性的<form>
标记。
什么是修复?
或者,我怎样才能不使用form_for
抓住一个FormBuilder
实例?
使用: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? %>
我有同样的问题,但感到困惑的是,在我的应用程序的其他forms工作正常。
我意识到,我不小心增加了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中查看其他选项
我没有运气,但我find了解决scheme。 我正在使用rails 4.1.6。
这没有奏效
= form_for @user, :html => {:class => 'x', 'data-bar' => 'baz'} %>
这样做了
= form_for @user, html: {:class => 'x', 'data-bar' => 'baz'} %>
注意与html选项的区别,希望这有助于