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

时间:2016-01-05 15:45:47

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

我正在将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中是否已移动此移动或等效替换?

1 个答案:

答案 0 :(得分:3)

该方法已弃用,似乎

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,请检查Rails 4版本是否可用。

如果此代码是您编写的内容,那么您可以尝试使用新的Tags类,具体取决于您要完成的内容。