ActiveAdmin / Rspec-ActionView :: Template :: Error(nil:NilClass的未定义方法“ action_methods”)

马卡诺

我最近将测试从使用Cucumber / Capybara转换为Rspec / Capybara。我正在使用ActiveAdmin。当我使用Cucumber对ActiveAdmin运行测试时,测试运行,一切都通过了。使用Rspec运行测试时,我收到:

Rendered /home/vagrant/.rvm/gems/ruby-2.0.0-p451/bundler/gems/active_admin-d11c0a56504a/app/views/active_admin/resource/index.html.arb (210.6ms)
Completed 500 Internal Server Error in 244ms

ActionView::Template::Error (undefined method `action_methods' for nil:NilClass):
    1: insert_tag renderer_for(:index)
  authlogic (3.4.2) lib/authlogic/controller_adapters/abstract_adapter.rb:63:in `method_missing'
  /home/vagrant/.rvm/gems/ruby-2.0.0-p451/bundler/gems/active_admin-d11c0a56504a/lib/active_admin/resource/action_items.rb:55:in `block in add_default_action_items'
  /home/vagrant/.rvm/gems/ruby-2.0.0-p451/bundler/gems/active_admin-d11c0a56504a/lib/active_admin/views/action_items.rb:9:in `instance_exec'
  /home/vagrant/.rvm/gems/ruby-2.0.0-p451/bundler/gems/active_admin-d11c0a56504a/lib/active_admin/views/action_items.rb:9:in `block (2 levels) in build'
  arbre (1.0.1) lib/arbre/element/builder_methods.rb:31:in `block in build_tag'
  arbre (1.0.1) lib/arbre/context.rb:92:in `with_current_arbre_element'
  arbre (1.0.1) lib/arbre/element/builder_methods.rb:49:in `with_current_arbre_element'
  arbre (1.0.1) lib/arbre/element/builder_methods.rb:26:in `build_tag'
  arbre (1.0.1) lib/arbre/element/builder_methods.rb:39:in `insert_tag'
  arbre (1.0.1) lib/arbre/element/builder_methods.rb:14:in `span'

那只是回溯的十行。实际上更大。让我知道是否应该粘贴。

导致此错误的rspec有何不同?

我正在使用rspec(2.14.1),activeadmin(master),ruby(2.0),rails(4.1.1)。

谢谢。

更新

这是我的activeadmin资源:

ActiveAdmin.register UserPermission, :as => 'Support User' do
  config.batch_actions = false
  config.clear_action_items!
  config.filters = false

  actions :new, :create, :index, :destroy  

  action_item only: [:index] do
    link_to 'Add Support User', new_admin_support_user_path
  end

  controller do
    def scoped_collection
      UserPermission.where(permission: 'support')
    end

    def destroy
      begin
        permission = UserPermission.find_by_id_and_permission!(
        params[:id], UserPermission::SUPPORT)
        permission.destroy if permission.present?
        redirect_to admin_support_users_path, notice: 'Support user removed.'
      rescue ActiveRecord::RecordNotFound
        redirect_to admin_support_users_path, alert: 'Support user not found.'
      end
    end

    def create
      user = User.find_by_email(params[:email])
      if user
        UserPermission.create(:user_id => user.id,
          :permission => UserPermission::SUPPORT,
          :creator => current_user)
        redirect_to admin_support_users_path, notice: 'Support user added.'
      else
        redirect_to new_admin_support_user_path, alert: 'User not found'
      end
    end
  end

  form partial: "form"

  index :download_links => false do
    column :email do |permission|
      permission.user.email
    end
    column :created_by do |permission|
      if permission.created_by.present?
        u = User.find_by_id(permission.created_by)
        u.email 
      end
    end
    column :created_at
    actions
  end

  menu :parent => 'Users', :priority => 1

end
马卡诺

我终于能够重新解决这个问题。准确指出错误在说些什么有点困难,但是该错误是由于多种原因造成的。

  1. config.clear_action_items!-这删除了我所有的控制器动作(编辑,显示,新建,创建...)。
  2. actions:new,:create,:index,:destroy-这创建了我想要的唯一控制器动作。
  3. 索引块中的操作(引发错误)-尝试呈现默认的edit,show和destroy操作,这些操作都不存在,从而导致异常。

我的解决方法是根本不尝试呈现那些丢失的动作。除了动作,我现在有:

actions defaults: false do |permission|
  link_to 'Delete', admin_support_user_path(permission), :method => :delete
end

这有效。但是,我仍然不明白为什么只有rspec对此有问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Rails RSpec测试:nil:NilClass的未定义方法“传递”

来自分类Dev

ActionView :: Template :: Error(未定义的方法...)在本地工作,但不适用于Heroku

来自分类Dev

简单的脚手架放置:ActionView :: Template :: Error:未定义的方法`edit_user_path'

来自分类Dev

RSpec视图测试ActionView :: Template :: Error:没有路由匹配{:action =>

来自分类Dev

Factory Girl + Rspec给出以下错误:ActionView :: Template :: Error :(对象ID)不是ID值

来自分类Dev

RSpec中nil:NilClass的未定义方法

来自分类Dev

ActionView :: Template :: Error(nil:NilClass的未定义方法“ city”):

来自分类Dev

ActionView :: Template :: Error:类的未定义方法`SOMETHING_path'?

来自分类Dev

ActionView :: Template :: Error(#<Order:0x007f4641e56198>的未定义方法`delivery_date'):

来自分类Dev

ActionView :: Template :: Error:nil:NilClass的未定义方法'is_admin'

来自分类Dev

Ruby where子句返回nil对象?ActionView :: Template :: Error(nil:NilClass的未定义方法“ each”):

来自分类Dev

actionview :: template :: error(未定义的方法'html_safe'为nil:NilClass)

来自分类Dev

ActionView :: Template :: Error(nil:NilClass的未定义方法`page_param')

来自分类Dev

Heroku生产-ActionView :: Template :: Error(#<Sprockets :: Manifest:number>的未定义方法“目录”)

来自分类Dev

ActionView :: Template :: Error(未定义的方法“沉默”用于)

来自分类Dev

ActionView :: Template :: Error(nil:NilClass的未定义方法“ each”):?

来自分类Dev

Ruby错误吗?导致ActionView :: Template :: Error-未定义的方法

来自分类Dev

ActionView :: Template :: Error(#<User:0x007f35612a5448>的未定义方法`phone'):

来自分类Dev

ActionView :: Template :: Error:nil:NilClass的未定义方法'is_admin'

来自分类Dev

actionview :: template :: error(nil:NilClass的未定义方法'html_safe')

来自分类Dev

ActionView :: Template :: Error:nil:NilClass的未定义方法'split'

来自分类Dev

nil:NilClass(RSpec)的未定义方法“ comments”

来自分类Dev

耙子流产了!ActionView :: Template :: Error:nil:NilClass的未定义方法“挑战”

来自分类Dev

rspec,nil:NilClass的未定义方法`id'

来自分类Dev

rspec未定义的方法`id',用于nil:NilClass

来自分类Dev

我的测试失败,并显示ActionView :: Template :: Error:nil:NilClass错误的未定义方法“名称”?

来自分类Dev

Heroku ActionView::Template::Error(nil:NilClass 的未定义方法`name')

来自分类Dev

Ruby on Rails ActionView::Template::Error

来自分类Dev

RSpec 错误:未定义的方法“包含?” 对于 nil:NilClass 和未定义的方法 `downcase' 对于 nil:NilClass

Related 相关文章

  1. 1

    Rails RSpec测试:nil:NilClass的未定义方法“传递”

  2. 2

    ActionView :: Template :: Error(未定义的方法...)在本地工作,但不适用于Heroku

  3. 3

    简单的脚手架放置:ActionView :: Template :: Error:未定义的方法`edit_user_path'

  4. 4

    RSpec视图测试ActionView :: Template :: Error:没有路由匹配{:action =>

  5. 5

    Factory Girl + Rspec给出以下错误:ActionView :: Template :: Error :(对象ID)不是ID值

  6. 6

    RSpec中nil:NilClass的未定义方法

  7. 7

    ActionView :: Template :: Error(nil:NilClass的未定义方法“ city”):

  8. 8

    ActionView :: Template :: Error:类的未定义方法`SOMETHING_path'?

  9. 9

    ActionView :: Template :: Error(#<Order:0x007f4641e56198>的未定义方法`delivery_date'):

  10. 10

    ActionView :: Template :: Error:nil:NilClass的未定义方法'is_admin'

  11. 11

    Ruby where子句返回nil对象?ActionView :: Template :: Error(nil:NilClass的未定义方法“ each”):

  12. 12

    actionview :: template :: error(未定义的方法'html_safe'为nil:NilClass)

  13. 13

    ActionView :: Template :: Error(nil:NilClass的未定义方法`page_param')

  14. 14

    Heroku生产-ActionView :: Template :: Error(#<Sprockets :: Manifest:number>的未定义方法“目录”)

  15. 15

    ActionView :: Template :: Error(未定义的方法“沉默”用于)

  16. 16

    ActionView :: Template :: Error(nil:NilClass的未定义方法“ each”):?

  17. 17

    Ruby错误吗?导致ActionView :: Template :: Error-未定义的方法

  18. 18

    ActionView :: Template :: Error(#<User:0x007f35612a5448>的未定义方法`phone'):

  19. 19

    ActionView :: Template :: Error:nil:NilClass的未定义方法'is_admin'

  20. 20

    actionview :: template :: error(nil:NilClass的未定义方法'html_safe')

  21. 21

    ActionView :: Template :: Error:nil:NilClass的未定义方法'split'

  22. 22

    nil:NilClass(RSpec)的未定义方法“ comments”

  23. 23

    耙子流产了!ActionView :: Template :: Error:nil:NilClass的未定义方法“挑战”

  24. 24

    rspec,nil:NilClass的未定义方法`id'

  25. 25

    rspec未定义的方法`id',用于nil:NilClass

  26. 26

    我的测试失败,并显示ActionView :: Template :: Error:nil:NilClass错误的未定义方法“名称”?

  27. 27

    Heroku ActionView::Template::Error(nil:NilClass 的未定义方法`name')

  28. 28

    Ruby on Rails ActionView::Template::Error

  29. 29

    RSpec 错误:未定义的方法“包含?” 对于 nil:NilClass 和未定义的方法 `downcase' 对于 nil:NilClass

热门标签

归档