Rails 3 到 Rails 4 升级未定义的方法 to_input_field_tag

Rails 3 to Rails 4 upgrade undefined method to_input_field_tag

我正在将 Rails 3 应用程序升级到 Rails 4,我在尝试启动 Rails 服务器时收到错误消息 undefined method to_input_field_tag for class ActionView::Helpers::InstanceTag NameError .

查看 API Dock http://apidock.com/rails/ActionView/Helpers/InstanceTag/to_input_field_tag 它显示此方法已弃用或移动。

这是否已移动或在 Rails 4 中有什么等效替代品?

该方法已被弃用,似乎

ActionView::Helpers::InstanceTag

已重构为:

ActionView::Helpers::ActiveModelInstanceTag

比较 Rails 3 和 4 之间的源代码,输入字段的呈现方式似乎发生了变化:

# ~/rails-3-2-stable/actionpack/lib/action_view/helpers/form_helper.rb

def text_field(object_name, method, options = {})
  InstanceTag.new(object_name, method, self, options.delete(:object)).to_input_field_tag("text", options)
end

更改为:

# ~/rails-4-2-stable/actionview/lib/action_view/helpers/form_helper.rb

def text_field(object_name, method, options = {})
  Tags::TextField.new(object_name, method, self, options).render
end

在升级到 Rails 4 的过程中,似乎有许多 gem 受到此更改的影响。因此,如果此错误来自 gem,请查看如果 Rails 4 版本可用。

如果这段代码是您编写的,那么您可以尝试使用新标签 class,具体取决于您要完成的具体目标。