Rails:覆盖Form Builder的按钮方法?

时间:2013-03-31 20:17:10

标签: ruby-on-rails form-for

当我使用form_for中的表单生成器生成一个按钮(带有f.button)时,它会生成一个标题为“”的按钮。我想要做的是为这个标题添加一个前缀:“MyPrefix”。 所以基本上我需要做的就是覆盖按钮方法(https://github.com/rails/rails/blob/488699166c3558963fa82d4689a35f8c3fd93f47/actionpack/lib/action_view/helpers/form_helper.rb#L1402)。但是我该怎么做?

谢谢!

1 个答案:

答案 0 :(得分:2)

您可以使用Custom Form Builder执行此操作(在该页面上搜索“自定义表单构建器”)。

代码大致如下(您必须确定前缀的确切位置):

class PrefixedFormBuilder < ActionView::Helpers::FormBuilder
   def button(value=nil)
      super(value, :title => 'MyPrefix')
   end
end

在ApplicationHelper中使用自定义帮助程序:

def prefixed_form_for(record, *args, &block)
   options = args.extract_options!
   options.merge!(:builder => PrefixedFormBuilder)
   form_for(record, *(args + [options]), &block)
end

然后使用:

prefixed_form_for(@model) do |f|
在您的观点中