2013-05-03 55 views
0

在这里,我有2个与一对多的关系简单的模型:Rails:在View中调用父模型的属性?

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> 

它的工作的权利。但在这里我有一个问题:是否有另一种方法可以调用类Category的属性。像@item.category.Name,我尝试但没有工作(undefined method "Name" for nil:NilClass

回答

1

为什么你有你的属性在骆驼案件? Downcase和改变这一点:

<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> 

它应该工作。

+0

还是不行,有错误就像我对零上面提到'未定义的方法“名”:NilClass'。 – WindzSoul 2013-05-04 08:07:29

0

也许一个零检查会有所帮助,如here所述。

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