0

レールを始めたばかりで、解決できない問題を見つけました。2つのモデル(賞と学生)でシンプルなアプリを作成しています。:award has_one :student:student belongs_to :award

show.html.erbのapp/views / Awards /で、次を置き換えるように言われました。

<%= @award.student_id %>

と:

<%= @award.student.given_name %> <%= @award.student.family_name %>

そしてindex.html.erbで、以下を置き換えます。

<%= award.student_id %>

と:

<%= award.student.given_name %> <%= award.student.family_name %>

この後、localhost:3000 / studentは正常に機能していますが、localhost:3000 / Awardsが機能しておらず、次のエラーが発生しています:-

**NoMethodError in Awards#index**

Showing /home/redblink/rbtest/students/app/views/awards/index.html.erb where line #17 raised:

undefined method `given_name' for nil:NilClass

Extracted source (around line #17):

14:   <tr>
15:     <td><%= award.name %></td>
16:     <td><%= award.year %></td>
17:     <td><%= award.student.given_name %> <%= award.student.family_name %></td>
18:     <td><%= link_to 'Show', award %></td>
19:     <td><%= link_to 'Edit', edit_award_path(award) %></td>
20:     <td><%= link_to 'Destroy', award, method: :delete, data: { confirm: 'Are you sure?' } %></td>

解決策をできるだけ早く返信してください.....

4

1 に答える 1

0

問題はawards、対応するstudentsレコードが存在しないレコードが 1 つあるため、そのレコードが返され、nilnilを呼び出すことができることです。given_name

したがって、次のように処理できます。

次のように記述します。

<%= award.student ? award.student.given_name : '' %> <%= award.student ? award.student.family_name : '' %>

それ以外の

<%= award.student.given_name %> <%= award.student.family_name %>

于 2012-08-06T10:38:51.510 に答える