簡體   English   中英

ruby-on-rails教程:無法顯示用戶的微博

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM