我试图在Rails教程中执行第11章,当我尝试进行清单11.33中的集成测试时,我会得到两个错误,即"param缺失或值为空: user“。然后它在用户控制器定义中列出两行,第一行是引用user_params,第二行是引用控制器中的create操作。我查看了其他一些问题,并根据答案删除了user_params定义中的require(:user)部分,这导致集成测试从有两个错误转到出现故障。但是我不想从user_params定义中删除require(:user)。有人知道我为什么会犯这个错误吗?下面是正在创建错误的测试部分:
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: "user@example.com",
password: "password",
password_confirmation: "password" } }
end下面是user_params的定义,除了这个测试外,它还能工作
def user_params
params.require(:user).permit(:name, :email, :password, :password_confirmation)
end发布于 2017-10-14 13:31:11
我发现了问题。我将通过safari在线阅读的教程书的版本与免费在线版本进行了比较,发现在该版本中,它们使用的是:
post users_path, user: { name: "Example User",当params:{}已从用户周围移除时:{}此更改使错误消失。
https://stackoverflow.com/questions/46740293
复制相似问题