Rails 4.1.4 ActionView :: Base默认表单生成器不存在

时间:2014-08-16 23:48:54

标签: ruby-on-rails form-for actionview ruby-on-rails-4.1 actionviewhelper

使用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_builderActionView::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选项[:builder] hash
  2. 在我的环境配置中添加以下行 config.action_view.default_form_builder = ActionView::Helpers::FormBuilder
  3. 我现在正在使用2)但这些都不是必需的。

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

1 个答案:

答案 0 :(得分:0)

Gemfile中有gem 'extlib'gem 'devise'吗? 在gem 'extlib'行下移动gem 'devise'
我不知道为什么,但它会起作用......