在rails 3.1中获取提交标签的自动ID

时间:2012-01-14 09:11:25

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

我正在尝试将应用移动到rails 3.1。我的许多测试都破了,因为提交按钮不再具有id。 Release Notes (see sect. "5.3 - Action View")确认了它:

  

提交表单助手不再生成id“object_name_id”。

以下是更改了action_view / helpers / form_helper.rb的relevant commit

我希望在没有弄乱已安装的gem或手动更改我的所有视图的情况下返回旧行为。所以我试着修补它:

# this is config/initializers/FormHelperMonkeypatch.rb

module ActionView
  module Helpers
    module FormHelper # <-- this is the line phoet repaired, see his answer below

      # code from rails 3.0
      def submit(value=nil, options={})
        value, options = nil, value if value.is_a?(Hash)
        value ||= submit_default_value
        @template.submit_tag(value, options.reverse_merge(:id => "#{object_name}_submit"))
      end

    end
  end
end

我重新启动了我的服务器,但我发现我的补丁没有效果。我做错了什么?

1 个答案:

答案 0 :(得分:1)

你正在编辑错误的地方。用这个:

module ActionView
  module Helpers
    class FormBuilder
      # code from rails 3.0
      def submit(value=nil, options={})
        value, options = nil, value if value.is_a?(Hash)
        value ||= submit_default_value
        @template.submit_tag(value, options.reverse_merge(:id => "#{object_name}_submit"))
      end
    end
  end
end