2017-10-14 94 views
0

我想在Ruby on Rails教程一书中做第11章,当我尝试执行代码清单11.33中的集成测试时,我得到两个错误, param丢失或者值为空:user“。它然后在用户控制器定义中列出两行,第一行是对user_params的引用,第二行是对控制器中的创建操作的引用。我查看了一些其他问题,并根据我尝试删除user_params定义中的require(:user)部分的答案,这导致集成测试从出现两个错误转向出现失败。但我不想从user_params定义中删除require(:user)。有谁知道我为什么得到这个错误?这里是正在创建错误的测试部分:Ruby on Rails教程 - 第11章 - 获取集成测试示例的错误

test "valid signup information with account activation" do 
get signup_path 

assert_difference 'User.count', 1 do 
    post users_path, params: { user: { name: "Example User", 
     email: "[email protected]", 
     password: "password", 
     password_confirmation: "password" } } 
end 

,这里是除了本次测试

def user_params 
params.require(:user).permit(:name, :email, :password, :password_confirmation) 
end 

回答

0

的作品,我发现这个问题的user_params的定义。我比较了教程的内容我公司通过提供免费的Safari在线图书与网络版在线阅读的版本,发现该版本中,他们改用:

post users_path, user: { name: "Example User", 

其中PARAMS:{}已移出围绕用户:{} 此更改使错误消失。

相关问题