如何在rails 3中向text_field添加默认类

tom*_*der 3 forms ruby-on-rails

如何更改rails表单助手的默认生成代码?

码...

<%= f.text_field :title, class: 'inputbox' %>
Run Code Online (Sandbox Code Playgroud)

... ...产生

<input id="post_title" name="post[title]" class="inputbox" type="text">
Run Code Online (Sandbox Code Playgroud)

...但我想默认情况下没有类参数的text_field生成代码.

我正在使用rails 3.2.

Pet*_*own 11

为了获得此行为,您将不得不覆盖现有的文本字段方法或添加一个执行所需操作的新方法.我会推荐后者,因为你不会改变内置Rails方法的现有行为.

另一个答案类似:

class ActionView::Helpers::FormBuilder
  def inputbox_field(method, options = {})
    text_field(method, options.merge(class: 'inputbox'))
  end
end
Run Code Online (Sandbox Code Playgroud)

然后你只需改变你的视图来使用它:

<%= f.inputbox_field :title %>
Run Code Online (Sandbox Code Playgroud)

  • @AlbertCatalà我不完全确定最好的地方,但你可以将它直接放在初始化器或lib/inputbox_field.rb中,并在Bundler.require之后的application.rb中要求它 (2认同)