我正在将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中是否已移动此移动或等效替换?
答案 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类,具体取决于您要完成的内容。