1

使用 Ruby 2.1.1 Rails 4.1.4

你好,

我一直在努力解决我在 FormHelper 上看到的一个非常奇怪的问题。我只是尝试使用构建表单form_forcannot call new for nil class当视图尝试渲染时出现错误。通过回溯,我发现问题其实出在:

ActionView::Helpers::FormHelper#instantiate_builder:1145-1146

builder = options[:builder] || default_form_builder
builder.new(object_name, object, self, options)

default_form_builder定义如下ActionView::Helpers::FormHelper

def default_form_builder
   builder = ActionView::Base.default_form_builder
   builder.respond_to?(:constantize) ? builder.constantize : builder
 end

我没有添加自定义表单生成器,只是尝试使用默认值。当我检查是什么时ActionView::Base.default_form_builder,我得到零。

让它为我工作的两个解决方案是:

  1. 将表单生成器对象传递给 form_for options[:builder] 哈希
  2. 在我的环境配置中添加以下行 config.action_view.default_form_builder = ActionView::Helpers::FormBuilder

我现在使用 2) 但这两个都不是必需的。

我到处都看过,但对发生的事情没有运气。谢谢你的帮助!

4

1 回答 1

0

你有gem 'extlib'gem 'devise'在 Gemfile 吗?
gem 'extlib'线移到线下gem 'devise'

我不知道为什么,但它会工作......

于 2015-02-05T05:28:37.670 回答