使用 Rails 的form_for,但在元素上设置自定义类、属性<form>?



form_for似乎忽略了任何"额外"属性,如data-foo属性或在其第二个参数中作为options传递的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? %>

我也遇到了同样的问题,但我很困惑,我的应用程序中其他地方的另一个表单工作正常。

我意识到我不小心在另一个form_for中添加了一个form_for,一旦删除就解决了问题。

其次,我应该补充一下,这种语法在Rails4.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选项的区别,希望这能帮助

最新更新