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

时间:2012-10-30 17:37:20

标签: ruby-on-rails ruby-on-rails-3

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个实例?

5 个答案:

答案 0 :(得分:177)

使用:html哈希:

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

或者

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

答案 1 :(得分:11)

Rails 4.0.3,Ruby 2.1.0p0 - &gt;这对我有用=&gt;

<%= form_for(@contact, :html => {:class => 'form_height'}) do |f| %><% if     @contact.errors.any? %>

答案 2 :(得分:4)

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

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

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

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

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

答案 3 :(得分:1)

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

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

您还可以在文档ActionsView::Helpers::FormHelper

中查看其他替代方法

答案 4 :(得分:1)

我尝试了上述但没有运气,但找到了解决方案。 我使用的是rails 4.1.6。

这没有用

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

这确实

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

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