2017-10-14 95 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:{}已移出圍繞用戶:{} 此更改使錯誤消失。

相關問題