簡體   English   中英

Rails:nil:NilClass的未定義方法

[英]Rails: undefined method for nil:NilClass

這可能是一個簡單的問題,但我無法弄清楚。

模型Question有許多模型Answer ,它們都屬於模型User

這是index.erb.html一部分:

<tbody>
    <% @questions.each do |question| %>
      <tr>
        <td><%= question.content %></td>
        <%= time_ago_in_words(question.created_at) %> ago by <%= question.user.email %>

        <td><%= link_to 'Show', question %></td>
        <td><%= link_to 'Edit', edit_question_path(question) %></td>
        <td><%= link_to 'Destroy', question, method: :delete, data: { confirm: 'Are you sure?' } %></td>

        <% if question.answers %>
          <h4>Answers</h4>
          <% @question.answers.each do |answer| %>
          <p> 
             <%= answer.content %> 
          </p>
          <% end %>
        <% end %>

        <br>
        <p>Add Answers</p>ww
        <%= form_for([question,question.answers.build]) do |f| %>
          <%= f.text_area :content %>
          <%= submit_tag "Add" %>
          <br>
          <% end %>

      </tr>
    <% end %>
  </tbody>

然后我使用seed.rb插入數據。

這是seed.rb

User.destroy_all
Question.destroy_all
Answer.destroy_all

user = User.create(email: "123@gmail.com", password: "2wsx1qaz")
q = Question.create(content: "Q1", user: user)
#q2 = Question.create(content: "Q2", user: user)
Answer.create(content:  "answer1", question: q, user: user)
Answer.create(content: "answer2", question: q, user: user)

但是它拋出了這個錯誤 在此處輸入圖片說明

我也把這個項目放在github上

更新資料

發生上述錯誤后,渲染結果很奇怪。

它應該顯示“問題”,然后檢查該問題是否有答案。 如果有,則顯示答案。

但是,在我的瀏覽器上的結果是這樣的

在此處輸入圖片說明

但是,我希望它應該像這樣

在此處輸入圖片說明

您沒有定義@question ,所以它為nil ,這就是為什么您得到了:調用此undefined method answers for nil:NilClassundefined method answers for nil:NilClass

@question.answers

您實際上已經定義了question 因此,使用它:-)

更改此:

<% @question.answers.each do |answer| %>

至:

<% question.answers.each do |answer| %>

我認為這行是不正確的

<%= time_ago_in_words(question.created_at) %> ago by <%= question.user.email %>

它在表數據之外,因此將其放在您的<td>子句中。 您的答案也不在任何表格數據中,因此請以表格的正確格式顯示。 有關更多信息,以在html #table中呈現表。 因此它會干擾您的UI部分。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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