2011-06-06 47 views
18

我创建了一个精确跟踪Getting Started with Rails的博客。然后我按照这里的教程尝试ActiveAdmin:http://activeadmin.info/documentation.htmlActiveAdmin评论模型无法正常工作

这对邮政和标签模型(我登录和创建/添加/编辑的东西),但不是评论模型工作正常。

rails generate active_admin:resource Comment 

create app/admin/comments.rb 

然后,当我尝试启动服务器我得到这个:

rails server=> Booting WEBrick 
=> Rails 3.0.7 application starting in development on http://0.0.0.0:3000 
=> Call with -d to detach 
=> Ctrl-C to shutdown server Exiting /usr/local/lib/ruby/gems/1.9.1/gems/activeadmin-0.2.2/lib/active_admin/namespace.rb:116:in 
`find_or_build_resource': Tried to 
register Comment as Comment but 
already registered to Comment 
(ActiveAdmin::ResourceMismatchError) 
    from 
/usr/local/lib/ruby/gems/1.9.1/gems/activeadmin-0.2.2/lib/active_admin/namespace.rb:45:in 
`register' from 
/usr/local/lib/ruby/gems/1.9.1/gems/activeadmin-0.2.2/lib/active_admin.rb:141:in 
`register' from 
/Users/myusername/Projects/RoR/blog/app/admin/comments.rb:1:in 
`<top (required)>' from 
/usr/local/lib/ruby/gems/1.9.1/gems/activesupport-3.0.7/lib/active_support/dependencies.rb:235:in 
`load' from 
/usr/local/lib/ruby/gems/1.9.1/gems/activesupport-3.0.7/lib/active_support/dependencies.rb:235:in 
`block in load'  from 
/usr/local/lib/ruby/gems/1.9.1/gems/activesupport-3.0.7/lib/active_support/dependencies.rb:225:in 
`block in load_dependency' from 
/usr/local/lib/ruby/gems/1.9.1/gems/activesupport-3.0.7/lib/active_support/dependencies.rb:596:in 
`new_constants_in' from 
/usr/local/lib/ruby/gems/1.9.1/gems/activesupport-3.0.7/lib/active_support/dependencies.rb:225:in 
`load_dependency' from 
/usr/local/lib/ruby/gems/1.9.1/gems/activesupport-3.0.7/lib/active_support/dependencies.rb:235:in 
`load' from 
/usr/local/lib/ruby/gems/1.9.1/gems/activeadmin-0.2.2/lib/active_admin.rb:185:in 
`block in load!' from 
/usr/local/lib/ruby/gems/1.9.1/gems/activeadmin-0.2.2/lib/active_admin.rb:185:in 
`each' from 
/usr/local/lib/ruby/gems/1.9.1/gems/activeadmin-0.2.2/lib/active_admin.rb:185:in 
`load!'  from 
/usr/local/lib/ruby/gems/1.9.1/gems/activeadmin-0.2.2/lib/active_admin.rb:212:in 
`routes' from 
/Users/myusername/Projects/RoR/blog/config/routes.rb:2:in 
`block in <top (required)>'  from 
/usr/local/lib/ruby/gems/1.9.1/gems/actionpack-3.0.7/lib/action_dispatch/routing/route_set.rb:233:in 
`instance_exec'  from 
/usr/local/lib/ruby/gems/1.9.1/gems/actionpack-3.0.7/lib/action_dispatch/routing/route_set.rb:233:in 
`draw' from 
/Users/myusername/Projects/RoR/blog/config/routes.rb:1:in 
`<top (required)>' from 
/usr/local/lib/ruby/gems/1.9.1/gems/activesupport-3.0.7/lib/active_support/dependencies.rb:235:in 
`load' from 
/usr/local/lib/ruby/gems/1.9.1/gems/activesupport-3.0.7/lib/active_support/dependencies.rb:235:in 
`block in load'  from 
/usr/local/lib/ruby/gems/1.9.1/gems/activesupport-3.0.7/lib/active_support/dependencies.rb:225:in 
`block in load_dependency' from 
/usr/local/lib/ruby/gems/1.9.1/gems/activesupport-3.0.7/lib/active_support/dependencies.rb:596:in 
`new_constants_in' from 
/usr/local/lib/ruby/gems/1.9.1/gems/activesupport-3.0.7/lib/active_support/dependencies.rb:225:in 
`load_dependency' from 
/usr/local/lib/ruby/gems/1.9.1/gems/activesupport-3.0.7/lib/active_support/dependencies.rb:235:in 
`load' from 
/usr/local/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/application.rb:127:in `block in reload_routes!' from 
/usr/local/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/application.rb:127:in `each' from 
/usr/local/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/application.rb:127:in `reload_routes!'  from 
/usr/local/lib/ruby/gems/1.9.1/gems/activeadmin-0.2.2/lib/active_admin.rb:123:in 
`block in setup' from 
/usr/local/lib/ruby/gems/1.9.1/gems/activesupport-3.0.7/lib/active_support/callbacks.rb:420:in 
`_run_prepare_callbacks' from 
/usr/local/lib/ruby/gems/1.9.1/gems/actionpack-3.0.7/lib/action_dispatch/middleware/callbacks.rb:40:in 
`initialize' from 
/usr/local/lib/ruby/gems/1.9.1/gems/actionpack-3.0.7/lib/action_dispatch/middleware/stack.rb:33:in 
`new' from 
/usr/local/lib/ruby/gems/1.9.1/gems/actionpack-3.0.7/lib/action_dispatch/middleware/stack.rb:33:in 
`build'  from 
/usr/local/lib/ruby/gems/1.9.1/gems/actionpack-3.0.7/lib/action_dispatch/middleware/stack.rb:79:in 
`block in build' from 
/usr/local/lib/ruby/gems/1.9.1/gems/actionpack-3.0.7/lib/action_dispatch/middleware/stack.rb:79:in 
`each' from 
/usr/local/lib/ruby/gems/1.9.1/gems/actionpack-3.0.7/lib/action_dispatch/middleware/stack.rb:79:in 
`inject' from 
/usr/local/lib/ruby/gems/1.9.1/gems/actionpack-3.0.7/lib/action_dispatch/middleware/stack.rb:79:in 
`build'  from 
/usr/local/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/application.rb:162:in `app' from 
/usr/local/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/application/finisher.rb:35:in 
`block in <module:Finisher>' from 
/usr/local/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/initializable.rb:25:in `instance_exec'  from 
/usr/local/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/initializable.rb:25:in `run' from 
/usr/local/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/initializable.rb:50:in `block in run_initializers'  from 
/usr/local/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/initializable.rb:49:in `each' from 
/usr/local/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/initializable.rb:49:in `run_initializers' from 
/usr/local/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/application.rb:134:in `initialize!' from 
/usr/local/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/application.rb:77:in 
`method_missing' from 
/Users/myusername/Projects/RoR/blog/config/environment.rb:5:in 
`<top (required)>' from 
/usr/local/lib/ruby/gems/1.9.1/gems/activesupport-3.0.7/lib/active_support/dependencies.rb:239:in 
`require' from 
/usr/local/lib/ruby/gems/1.9.1/gems/activesupport-3.0.7/lib/active_support/dependencies.rb:239:in 
`block in require' from 
/usr/local/lib/ruby/gems/1.9.1/gems/activesupport-3.0.7/lib/active_support/dependencies.rb:225:in 
`block in load_dependency' from 
/usr/local/lib/ruby/gems/1.9.1/gems/activesupport-3.0.7/lib/active_support/dependencies.rb:596:in 
`new_constants_in' from 
/usr/local/lib/ruby/gems/1.9.1/gems/activesupport-3.0.7/lib/active_support/dependencies.rb:225:in 
`load_dependency' from 
/usr/local/lib/ruby/gems/1.9.1/gems/activesupport-3.0.7/lib/active_support/dependencies.rb:239:in 
`require' from 
/Users/myusername/Projects/RoR/blog/config.ru:3:in 
`block in <main>' from 
/usr/local/lib/ruby/gems/1.9.1/gems/rack-1.2.1/lib/rack/builder.rb:46:in 
`instance_eval'  from 
/usr/local/lib/ruby/gems/1.9.1/gems/rack-1.2.1/lib/rack/builder.rb:46:in 
`initialize' from 
/Users/myusername/Projects/RoR/blog/config.ru:1:in 
`new' from 
/Users/myusername/Projects/RoR/blog/config.ru:1:in 
`<main>' from 
/usr/local/lib/ruby/gems/1.9.1/gems/rack-1.2.1/lib/rack/builder.rb:35:in 
`eval' from 
/usr/local/lib/ruby/gems/1.9.1/gems/rack-1.2.1/lib/rack/builder.rb:35:in 
`parse_file' from 
/usr/local/lib/ruby/gems/1.9.1/gems/rack-1.2.1/lib/rack/server.rb:162:in 
`app' from 
/usr/local/lib/ruby/gems/1.9.1/gems/rack-1.2.1/lib/rack/server.rb:248:in 
`wrapped_app' from 
/usr/local/lib/ruby/gems/1.9.1/gems/rack-1.2.1/lib/rack/server.rb:213:in 
`start'  from 
/usr/local/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/commands/server.rb:65:in `start' from 
/usr/local/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/commands.rb:30:in 
`block in <top (required)>'  from 
/usr/local/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/commands.rb:27:in 
`tap' from 
/usr/local/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/commands.rb:27:in 
`<top (required)>' from 
script/rails:6:in `require'  from 
script/rails:6:in `<main>' 

您的帮助,将不胜感激。

+0

这是ActiveAdmin当前版本中不再是一个问题。 – superluminary 2013-05-15 12:22:13

回答

43

看起来像一个bug(ActiveAdmin有它自己的内置Comment模型/类的话):https://github.com/gregbell/active_admin/issues/64

可能的解决方法可能是内给你Comment型号不同的名称在app/admin/comments.rb

ActiveAdmin.register Comment, :as => "PostComment" do 
1

迪伦的回答是一个很好的开始。除了他之外,我还需要覆盖控制器资源/收集方法。

app/admin/comments.rb

ActiveAdmin.register Comment, as: 'QuestionComment' do 
    controller do 
    defaults resource_class: Comment, collection_name: 'comments', instance_name: 'comment' 
    end 
end 

基本上,你只是继承覆盖资源控制器的默认值(https://github.com/josevalim/inherited_resources#overwriting-defaults

(是的,这仍然是在2014年的问题,即使在1.0.0预发布版本,但现在看来,他们要修复它从阅读GitHub的问题)

4

试试这个

运行在终端

rails g active_admin:resource ActiveAdmin::Comment 

添加下列行 应用/管理/ active_admin_comment.rb

ActiveAdmin.register ActiveAdmin::Comment, :as => "Comment" do 
end 

该编辑配置/初始化后/ active_admin

[...] 
    config.comments_registration_name = "OldComment" 
    config.show_comments_in_menu = false 
[...] 

现在你有机会定制评论应用程序/管理/ active_admin_comment.rb 但我仍然没有找到解决方案添加:更新:摧毁行动

+1

在1.0.pre中它现在是config的一部分,只需取消注释'active_admin.rb'配置中的行。无需重新打开评论的定义,评论可以被禁用。 – 2014-06-06 20:26:42

3

我在版本1.0.0.pre中遇到了同样的问题,但幸运的是,您可以使用active_admin.rb中的配置完全禁用ActiveAdmin注释,那么您就不必像上面提到的那样别名您自己的注释模型了。

config/initializers/active_admin。RB

... 
    # == Admin Comments 
    # 
    # This allows your users to comment on any resource registered with Active Admin. 
    # 
    # You can completely disable comments: 
    config.allow_comments = false 
    # 

它在文档中还列出:https://github.com/gregbell/active_admin/blob/master/docs/1-general-configuration.md#comments