使用 Ruby 2.1.1 Rails 4.1.4
你好,
我一直在努力解决我在 FormHelper 上看到的一个非常奇怪的问题。我只是尝试使用构建表单form_for
,cannot 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
,我得到零。
让它为我工作的两个解决方案是:
- 将表单生成器对象传递给 form_for options[:builder] 哈希
- 在我的环境配置中添加以下行
config.action_view.default_form_builder = ActionView::Helpers::FormBuilder
我现在使用 2) 但这两个都不是必需的。
我到处都看过,但对发生的事情没有运气。谢谢你的帮助!