Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何使用Mongoid修复此RSpec错误?“无法将符号转换为整数”_Ruby On Rails_Ruby_Rspec_Devise_Mongoid - Fatal编程技术网

Ruby on rails 如何使用Mongoid修复此RSpec错误?“无法将符号转换为整数”

Ruby on rails 如何使用Mongoid修复此RSpec错误?“无法将符号转换为整数”,ruby-on-rails,ruby,rspec,devise,mongoid,Ruby On Rails,Ruby,Rspec,Devise,Mongoid,我正在为我的控制器编写测试。它们非常简单,但这个错误一直在出现。这是我的控制器 def show id=params[:id] @user=User.find(:first,id) end 我的测试 before(:each) do @user = Fabricate(:user) sign_in @user end ... it "should be successful" do get "show", :id => @u

我正在为我的控制器编写测试。它们非常简单,但这个错误一直在出现。这是我的控制器

  def show
    id=params[:id]
    @user=User.find(:first,id)
  end
我的测试

  before(:each) do
    @user = Fabricate(:user)
    sign_in @user
  end
  ...
  it "should be successful" do
    get "show", :id => @user
    response.should be_success
  end
以及错误消息

  1) UsersController GET 'show' for the logged in user should be successful
     Failure/Error: get "show", :id => @user
     TypeError:
       can't convert Symbol into Integer
     # ./app/controllers/users_controller.rb:6:in `show'
     # ./spec/controllers/users_controller_spec.rb:31:in `block (4 levels) in <top (required)>'
获取显示:id=>@user


您这里的问题可能与@user有关,从您发布的示例来看,它在您的规范上下文中的值并不清楚。您应该传递一个整数记录id作为的值,例如:id=>1。

您的控制器就是错误所在。find方法仅自动将其在代码中等效的第一个结果返回给用户。其中:id=>params[:id]。first。尝试删除:first符号,只需传入id User。findid

执行此操作时,我遇到另一个错误:BSON::InvalidDocument:无法将类User的对象序列化到BSON中。我使用的是Mongoid,但API与ActiveRecord大致相同。