0

在这里,我有 2 个具有一对多关系的简单模型:

class Category < ActiveRecord::Base
  attr_accessible :Name
  has_many :items

class Item < ActiveRecord::Base
  attr_accessible :Category_id, :Name, :Price, :Description
  belongs_to :category

我有一个视图来显示有关项目的信息,例如:

<table>
  <tr>
    <td class="field" style="width: 175px;"><b>Name:</b></td>
    <td><%= @item.Name %></td>
  </tr>
  <tr>
    <td class="field"><b>Price:</b></td>
    <td><%= @item.Price%></td>
  </tr>
  <tr>
    <td class="field"><b>Category: </b></td>
    <td><%= Category.find(@item.Category_id).Name %></td>
  </tr>
  <tr>
    <td class="field"><b>Description: </b></td>
    <td><%= @item.Description %></td>
  </tr>
</table>

这是正确的工作。但在这里我有一个问题:是否有另一种方法来调用 classCategory的属性。@item.category.Name我尝试过但没有用的东西( undefined method "Name" for nil:NilClass

4

2 回答 2

1

为什么你有你的骆驼案的属性?将它们小写并更改:

<tr>
    <td class="field"><b>Category: </b></td>
    <td><%= Category.find(@item.Category_id).Name %></td>
  </tr>

对此:

<tr>
  <td class="field"><b>Category: </b></td>
  <td><%= item.category.name %></td>
</tr>

它应该工作。

于 2013-05-03T09:43:50.713 回答
0

或许 nil 检查会有所帮助,如此所述。

<tr>
  <td class="field"><b>Category: </b></td>
  <td><%= @item.category.name unless @item.category.nil? %></td>
</tr>
于 2013-11-12T05:42:09.190 回答