【问题标题】:ActiveAdmin Error: no superclass method `buttons'ActiveAdmin 错误:没有超类方法“按钮”
【发布时间】:2012-04-10 11:19:28
【问题描述】:

我从 Rails 开始(我也是 Ruby 的新手——来自 Python——),我目前正在尝试为 Rails 3.2.3(Ruby 1.9.3)设置 ActiveAdmin。 我正在关注this guide,但我无法正常运行它。当我运行rails s 命令访问localhost:3000/admin 我得到

NoMethodError in Active_admin/devise/sessions#new

Showing /home/lex/.rvm/gems/ruby-1.9.3-p125/gems/activeadmin-0.4.3/app/views/active_admin/devise/sessions/new.html.erb where line #11 raised:

super: no superclass method `buttons' for #<ActiveAdmin::FormBuilder:0xb429ae0>

我在 Google 上找不到任何有用的东西,这是怎么回事?

如果您需要有关此异常的更多信息,请告诉我。

Extracted source (around line #11):

8:       f.input :password
9:       f.input :remember_me, :as => :boolean, :if =>  false  #devise_mapping.rememberable? }
10:     end
11:     f.buttons do
12:       f.commit_button "Login"
13:     end
14:   end

【问题讨论】:

  • 请发布您的视图代码,以便我们查看产生异常的行。
  • 我已添加引发此异常的源。顺便说一句,没有自定义代码,这是默认安装。您可能会注意到,使用内置 ActiveAdmin 的设计视图会引发异常。似乎没有这样的设计:提取自定义视图的视图(但它们促进了 DSL 来自定义界面)
  • 您能否解决您的问题?我遇到了同样的问题
  • 我使用@landox 解决方案并运行bundle update formtastic,这解决了我的问题

标签: ruby-on-rails ruby ruby-on-rails-3 activeadmin


【解决方案1】:

适用于 Rails 4+

如果您运行的是 Rails 4+,请使用 f.actions 而不是 f.buttons。这是一个在 ActiveAdmin 存储库https://github.com/activeadmin/activeadmin/issues/1085 上讨论此更改的问题@

2012年OP问题的原始答案

似乎 formtastic 2.2.0(今天发布)打破了 active_admin 并且因为 active_admin 需要 formtastic >= 2.0.0...把这个放在你的 Gemfile 中

gem "formtastic", "~> 2.1.1"
gem "activeadmin", "~> 0.4.3"

然后运行

bundle update formtastic

然后重启你的服务器(如果你有它运行的话)..

应该可以正常工作...

【讨论】:

  • 完成此操作后,请确保运行bundle update formtastic。这将强制您的应用程序使用您指定的版本
  • 此答案不再适用于较新的导轨。只需使用f.actions 而不是f.buttons 来修复您的表单。
【解决方案2】:

我遇到了同样的问题,它已经杀死了我大约几个小时。

我正在使用 rails 4 和活动管理员表单 master git:

gem 'activeadmin', github: 'gregbell/active_admin'

我只是使用“f.actions”而不是“f.buttons”

form do |f|
  f.inputs "Enter Todo details" do
    f.input :quote_id, :as => :select, :collection => Quote.all.map {|q| [ q.contact,q.id]}, :include_blank => false 
    f.input :name, :label => "Name of customer"
    f.input :state, :as => :select, :collection => ['Active','Closed'], :include_blank => false
    f.input :moving_date
    f.input :revisit
    f.input :address
    f.input :status
  end
  f.actions
end

这对我有用。

【讨论】:

  • 我使用的是 Rails 4 和 master 分支,这对我来说非常有效!非常感谢!
  • 感谢您的回答 - 非常适合 rails 4!
  • 对我来说这是更好的答案,因为使用旧版本的 formtastic
  • 接受的答案是从 2012 年开始的,您需要在评论前检查日期:)
  • 这应该是正确的答案,因为它实际上解决了问题 + formtastic gem 版本黑客不再适用于较新的 Rails。
【解决方案3】:

我在 gemfile 中做了以下更改

gem 'activeadmin', '0.4.2' 宝石'formtastic','2.0.0'

它解决了同样的问题。原因与上面解释的相同。formtastic 2.2.0 与 activeadmin 当前版本不兼容

【讨论】:

    【解决方案4】:

    我按照上面的说明进行操作,但同样的错误不断弹出。在我关闭并重新打开rails server 后,它自行解决了,但只是给遇到此问题的其他任何人的说明;确保重新启动服务器。 :)

    【讨论】:

    • 是的,完全......当你安装一个新的gem时,你必须重新启动服务器......我把这个添加到答案中......
    【解决方案5】:

    您是否运行了“bundle”命令来获取必要的 gem 和依赖项(ActiveAdmin、Formtastic 等)? 这是启动 rails 时的常见错误。

    【讨论】:

    • 当然,我做到了。它安装了所有依赖项,包括formtastic (2.2.0)
    【解决方案6】:

    我继承了一个在 2012 年 7 月左右编写的项目,该项目使用 ActiveAdmin 0.4.0 和 formtastic-bootstrap(关闭 Git)。

    由于 AA 版本中的 URL 生成错误,我升级到 0.5.0,但现在我收到超类错误。任何人都知道我应该如何处理这条线:

    gem 'formtastic-bootstrap',   :git => "git://github.com/cgunther/formtastic-bootstrap.git", :branch => "bootstrap-2"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-06
      • 2013-10-22
      • 1970-01-01
      • 2019-06-01
      • 1970-01-01
      • 2021-06-08
      • 2022-11-01
      • 2011-06-11
      相关资源
      最近更新 更多