100

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

4

5 回答 5

212

使用:html哈希:

= form_for @user, :html => {:class => 'x', 'data-bar' => 'baz'} do |f|

或者

= form_for @user, html: {class: 'x', data: { bar: 'baz' } } do |f|
于 2012-10-30T17:44:48.860 回答
11

Rails 4.0.3,Ruby 2.1.0p0 -> 这对我有用 =>

<%= form_for(@contact, :html => {:class => 'form_height'}) do |f| %><% if     @contact.errors.any? %>
于 2014-08-12T21:32:46.777 回答
5

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

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

其次,我应该补充一点,这种语法在 Rails 4.2 中适用于我:

<%= form_for @type, html: {class: "form-horizontal"} do |f| %>

我发现它比此处其他答案的标点符号汤更好(可能基于旧的 Rails 版本)。

于 2016-06-28T07:50:13.837 回答
1

在大多数帮助器上,最后一个 arg 是元素的 html 选项的哈希值。

= form_for @user, :html => {:class => 'x', 'data-bar' => 'baz'} %>

您还可以在文档ActionsView::Helpers::FormHelper中查看其他替代方案

于 2012-10-30T17:51:22.073 回答
1

我没有运气尝试了上述方法,但找到了解决方案。我正在使用导轨 4.1.6。

这没有用

= form_for @user, :html => {:class => 'x', 'data-bar' => 'baz'} %>

这做到了

= form_for @user, html: {:class => 'x', 'data-bar' => 'baz'} %>

注意与 html 选项的区别,希望这会有所帮助

于 2014-10-28T22:40:29.070 回答