更改数据库后,ActiveAdmin的未定义方法`_input'

时间:2011-10-07 13:31:36

标签: ruby-on-rails activeadmin

我刚刚改变了我的模型......做了

rails g migration remove_XXX_from_YYY XXX:string

然后

rails g migration add_AAA_to_YYY AAA:content

现在我正在尝试进入活动管理页面并呈现“编辑:操作..但我收到错误消息:

显示.... / activeadmin-0.3.2 / app / views / active_admin / resource / edit.html.arb第1行引出:

undefined method `_input' for #<ActiveAdmin::FormBuilder:0xf859210>


Extracted source (around line #1):

1: render renderer_for(:edit)

应用程序跟踪:

app/admin/posts.rb:9:in `block (3 levels) in <top (required)>'
app/admin/posts.rb:4:in `block (2 levels) in <top (required)>'

我在“新”操作中遇到同样的错误。除了:1: render renderer_for(:new)

ActiveAdmin的所有其他操作都有效。 (显示,索引,删除)。

OBS!我可以使用'normal'_form.html.erb创建和编辑帖子,但不能通过ActiveAdmin创建和编辑帖子。

我使用ActiveAdmin 0.3.2和formtastic 1.2.4。

有什么可能出错的建议吗?

谢谢

1 个答案:

答案 0 :(得分:2)

您获得的错误与Active Admin无关,但来自Formtastic(Active Admin用于构建漂亮表单的gem)。这可能是因为您在其中一个模型属性上使用自定义数据类型。

我会尝试覆盖ActiveAdmin.register块内的表单(直接或通过部分)。我会手动指定每个属性,然后一次注释掉每个字段。每次我重新加载页面,看看错误是否已经消失。第二个错误消失我知道哪个字段导致问题。然后我会添加:as => :string(或任何其他适当的输入类型)来强制Formtastic使用该特定输入类型。

之前的例子:

ActiveAdmin.register User do
  form do |f|
    f.inputs do
      f.input :name
      f.input :email
      f.input :birthday
      f.input :foobar
    end
    f.buttons
  end
end

例如:

ActiveAdmin.register User do
  form do |f|
    f.inputs do
      f.input :name
      f.input :email
      f.input :birthday
      f.input :foobar, :as => :string
    end
    f.buttons
  end
end