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



我正在尝试将一个应用程序移动到rails 3.1。我的许多测试都失败了,因为提交按钮不再有id。发行说明(参见"5.3-操作视图"一节)确认了这一点:

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

以下是更改action_view/helpers/form_helper.rb.的相关提交

我想在不干扰安装的宝石或手动改变我所有观点的情况下恢复以前的行为。所以我试着用猴子补丁:

# 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

我重新启动了服务器,但我看不到我的补丁有任何影响。我做错了什么?

您编辑的地方不对。使用这个:

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

最新更新