我對邁克爾·哈特爾(第3版)運動對Rails的教程工作2Rails教程ch.10 ex 2 - 未定義的方法`activated?'
它由兩個部分組成,而第二部分提出了一個錯誤:
Explanation: A user wants to access an other user's profile page. When this account is not yet activated the user that wanted to access, gets redirected to the root page (easy right?)
的代碼,我知道應該做的這項工作:
(app/controllers/users_controller.rb)
def show
@user = User.find_by_id(params[:id])
redirect_to root_url and return unless @user.activated?
end
有,我已經使用了activated?
方法,不用任何錯誤,其他三個控制器中的文件。但是在這個場合,當訪問未激活的用戶頁面時會出現錯誤。
這是從控制檯輸出:
Processing by UsersController#show as HTML
Parameters: {"id"=>"101"}
User Load (0.2ms) SELECT "users".* FROM "users" WHERE "users"."id" = ?
LIMIT 1 [["id", 101]]
Completed 500 Internal Server Error in 2ms (ActiveRecord: 0.2ms)
NoMethodError (undefined method `activated?' for nil:NilClass):
app/controllers/users_controller.rb:12:in `show'
是什麼原因造成的錯誤?用戶在數據庫中尚未激活(激活= false)。
編輯:
發現導致錯誤的問題。我已經做了幾個帳戶,我也刪除了。這有效,但ID從我刪除的最後一個繼續計數。所以下一個用戶不在101以下,107以下。重置數據庫,現在它工作。感謝sajinmp讓我再次查看數據庫。
與id的問題仍然存在,但我會爲此創建另一個線程,因爲它與此無關。
歡迎來到Stack Overflow。這非常詳細。請減少它以使您的具體問題更加簡潔。請閱讀「[問]」,包括最後一個鏈接和「[mcve]」。 –
這樣比較好? – L03TJ3
錯誤與數據庫有關。提取返回內部服務器錯誤。所以你沒有得到用戶。需要更多細節。什麼是User.find(101)'在rails控制檯中生成? – sajinmp