Ruby on rails 覆盖Rails日期\u选择表单帮助器

Ruby on rails 覆盖Rails日期\u选择表单帮助器,ruby-on-rails,ruby-on-rails-3.2,Ruby On Rails,Ruby On Rails 3.2,我想在我的应用程序(running Rails 3.2)中覆盖date_select form helper,以便从中引入:selected参数 现在有点老了,但我引用它是为了让它工作 因此,我在lib/中的一个文件中有以下内容,包括在environment.rb的底部: ActionView::Helpers::Tags::DateSelect.class_eval do # # Note: Using ActionView::Helpers::DateTimeSelector as sugg

我想在我的应用程序(running Rails 3.2)中覆盖date_select form helper,以便从中引入
:selected
参数

现在有点老了,但我引用它是为了让它工作

因此,我在
lib/
中的一个文件中有以下内容,包括在
environment.rb的底部:

ActionView::Helpers::Tags::DateSelect.class_eval do
#
# Note: Using ActionView::Helpers::DateTimeSelector as suggested in 
# linked question doesn't error, but also doesn't seem to do anything.
#
  def datetime_selector(options, html_options)
    datetime = options[:selected] || value(object) || default_datetime(options)
    @auto_index ||= nil

    options = options.dup
    options[:field_name]           = @method_name
    options[:include_position]     = true
    options[:prefix]             ||= @object_name
    options[:index]                = @auto_index if @auto_index && !options.has_key?(:index)

    DateTimeSelector.new(datetime, options, html_options)
  end

end
但是,当尝试启动我的应用程序时,我看到:

NameError: uninitialized constant ActionView::Helpers::Tags
在控制台中播放时确认:

1.9.3-p327 :001 > ActionView
 => ActionView 
1.9.3-p327 :002 > ActionView::Helpers
 => ActionView::Helpers 
1.9.3-p327 :003 > ActionView::Helpers::Tags
NameError: uninitialized constant ActionView::Helpers::Tags
  from (irb):3
  from /Users/colin/.rvm/gems/ruby-1.9.3-p327/gems/railties-3.2.11/lib/rails/commands/console.rb:47:in `start'
  from /Users/colin/.rvm/gems/ruby-1.9.3-p327/gems/railties-3.2.11/lib/rails/commands/console.rb:8:in `start'
  from /Users/colin/.rvm/gems/ruby-1.9.3-p327/gems/railties-3.2.11/lib/rails/commands.rb:41:in `<top (required)>'
  from script/rails:6:in `require'
  from script/rails:6:in `<main>'

ActionView::Helpers::Tags
在Rails 4中是新的(您链接到Rails主分支,即4.0分支),在Rails 3.2.x应用程序中,您需要查看该3.2表分支的源代码。这看起来像是monkey patch的地方

我确信我在3.2中看到了相同的文件-一直在挖掘太多的代码!谢谢
ActionView::Helpers::InstanceTag.class_eval do
  def datetime_selector(options, html_options)
    datetime = options.fetch(:selected) { value(object) || default_datetime(options) }

    @auto_index ||= nil

    options = options.dup
    options[:field_name]           = @method_name
    options[:include_position]     = true
    options[:prefix]             ||= @object_name
    options[:index]                = @auto_index if @auto_index && !options.has_key?(:index)

    ActionView::Helpers::DateTimeSelector.new(datetime, options, html_options)
  end
end