2013-05-03 3 views
0

здесь у меня есть 2 простая модель с одним-многими:Rails: вызов атрибута родительской модели в представлении?

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> 

Это работа правильно. Но здесь у меня есть вопрос: есть ли еще один способ вызвать класс class 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

все еще не работает, есть ошибка, как я упомянул выше 'неопределенный метод 'name' для nil: NilClass'. – WindzSoul

0

Возможно, проверка на нуль поможет, как описано here.

<tr> 
    <td class="field"><b>Category: </b></td> 
    <td><%= @item.category.name unless @item.category.nil? %></td> 
</tr> 
Смежные вопросы