[英]Ruby-On-Rails - Can't access current_user in post model/ post controller#create
[英]ruby-on-rails tutorials: Can't show a user's microposts
當我閱讀“ Ruby on Rails 3教程”時,我試圖找出我在第11章中做錯了什么,因為我無法通過清單11.15中的測試。
因此,我留在11.2.1節中。 由於我無能為力,因此我決定忽略這一點,並繼續進行下去:為前六個用戶填寫50個微博,然后嘗試訪問用戶的顯示頁面。 我得到以下錯誤頁面:
NoMethodError in Users#show
Showing <my_path>/sample_app/app/views/users/show.html.erb where line #10 raised:
undefined method `model_name' for NilClass:Class
Extracted source (around line #10):
7: </h1>
8: <% unless @user.microposts.empty? %>
9: <table class="microposts" summary="User microposts">
10: <%= render @microposts %>
11: </table>
12: <%= will_paginate @microposts %>
13: <% end %>
經過反復試驗,由於某種原因,實例變量@microposts看起來為nil。 看起來方法“ UsersController.show”沒有完成創建該實例變量的工作。 但是,我可以驗證此方法是否已執行,因為只要他沒有任何微博,我就可以成功訪問用戶的顯示頁面。
在這一步,很難給出更多的提示。 但是我可以說所有其他測試都通過了。
嘗試用@ user.microposts替換所有出現的@microposts。
@microposts是否在您的控制器操作中定義? 還是@user是在控制器操作中定義的? 因為@ user.microposts似乎與@microposts(在此上下文中)是同一回事,除非您為關聯的user.microposts對象聲明了變量,否則您可能正在嘗試訪問不存在的變量。
可能是@user.microposts
嗎? 在第8行它檢查是否存在的東西?
好吧,由於這些類型的錯誤,一個愚蠢的錯誤在某個地方蔓延。
遵循ruby.railstutorial.org網站的建議。 我確實將代碼與作者之一進行了比較。 猜猜在我的UsersController版本中,“ show”方法有兩個定義! 在文件底部的第二個實例沒有對@microposts實例變量進行任何分配。
如果我必須編譯該東西,該錯誤將被發現。 我猜必須有一種針對紅寶石語法檢查器掃描rails站點的方法。
無論如何,謝謝其他人的建議。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.