[英]Undefined method 'id' for nil:NilClass Ruby on Rails essential training
[英]Undefined method 'id' for nil:NilClass, Ruby on Rails
我不斷收到此錯誤,我不確定為什么。
現在是我的用戶控制器:
def show
@user = User.find_by(id: params[:id])
end
和我嘗試過的
@user = User.find_by_id(params[:id])
@user = User.find(params[:id])
而我目前的HTML:
<li><%= link_to "Profile", user_path(@user, show) %></li>
和我嘗試過的:
<li><%= link_to "Profile", user_path(@user) %></li>
<li><%= link_to "Profile", user_path(@user.id) %></li>
<li><%= link_to "Profile", "/users/#{@user.id}" %></li>
<li><%= link_to "Profile", user_path %></li>
<li><%= link_to "Profile", user_show_path %></li>
幫助表示贊賞。 謝謝!
rake routes
路線
注意: find_by
可以返回nil。 因此,您必須在使用前對其進行檢查。
def show
@user = User.find_by(id: params[:id])
unless @user
render status: 404, nothing: true
end
end
我認為這是你的情況。 find_by
只返回nil
您需要提供更多詳細信息。 我們需要確保您嘗試訪問的用戶(用戶)確實存在。 您可以按照以下方式進行檢查:
$ rails console --sandbox
Loading development environment in sandbox (Rails 4.2.1)
Any modifications you make will be rolled back on exit
2.2.3 :001 > User.all.count
(12.5ms) SELECT COUNT(*) FROM "users"
=> 2
2.2.3 :002 > id = User.first.id
User Load (1.2ms) SELECT "users".* FROM "users" ORDER BY "users"."id" ASC LIMIT 1
=> 3
2.2.3 :003 > app.user_path(id: id)
=> "/users/3"
2.2.3 :004 >
確保User.all.count
返回的數字大於0。如果為0,則沒有用戶,您需要創建一個。
好的,這是要抓住的地方,我看到您使用了gem dev,並且您正在嘗試對USER
執行CRUD
,所以設計可幫助用戶會話控制登錄和注銷的默認路由將取代傳統的users
行為。
請參閱方法:通過CRUD界面管理用戶
或請參考之前的帖子
設計注冊控制器與我自己的“注冊”控制器沖突
我希望這能消除您的所有疑問
干杯
我需要添加user_path(current_user)
而不是嘗試獲取ID。 感謝大家!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.