2013-07-19 6 views
0

В моих представлениях у меня есть папка под названием категории, а в этой папке - индекс файла. Все работало хорошо, пока я не пытался оказать парциальное на этом сайте:Render partial in normal page

<div class="row-fluid"> 
<div class="span3"> 

<table class="table table-striped"> 
<tr> 
<th>Kategory:</th> 
<th></th> 
</tr> 

<% for category in @categories do %> 
<tr> 
.................................... 


<div class="span9"> 
<%= render "ebms/star" %> 
</div> 
</div> 

Каким-то образом я получаю ошибку

NoMethodError in Categories#index 

Showing C:/Sites/rublesql/app/views/ebms/_star.html.erb where line #10 raised: 

undefined method `each' for nil:NilClass 

    <% for ebm in @ebms do %> 
11: <tr> 
12:  <td><%= ebm.number %></td>  
13:  <td><%= ebm.text %></td> 

Но я действительно не знаю, как я должен изменить свою частичную:

<table class="table table-striped"> 
<tr> 
<th>Nummer:</th> 
<th>Text:</th> 
<th>Beschreibung:</th> 
<th></th> 
<th></th> 
</tr> 

<% for ebm in @ebms do %> 
<tr> 
<td><%= ebm.number %></td>  
<td><%= ebm.text %></td> 
<td><%= ebm.content %></td> 
<td><%= ebm.star %></td> 
<td><%= link_to 'Star', set_star_path(ebm), method: :put, confirm: 'Are you sure?' %> </td> 
</tr> 
<% end %> 
</table> 
+1

<% = штукатуркой "/ ВБМ/звезда",: местные жители => {: ВБМ => @ebms}%> и в частичном использовании <% ebms.each сделать | EBM |%> ваш код <% end> –

+1

'@ ebms' - нуль. – yxf

+0

http://guides.rubyonrails.org/layouts_and_rendering.html#using-partials – gabrielhilal

ответ

1

Частично ожидает, что существует переменная вызова экземпляра @ebms, которая не определена, поэтому ее nil и значения nil не могут быть повторены как вы пробуете его в частичном. Таким образом, вам нужно либо изменить частичное, чтобы он ожидал, что переменная экземпляра действительно задана, либо вам нужно определить @ebms в вашем контроллере, чтобы частичная работа с ней могла работать.

В контроллере необходимо определить экземпляр вар, как это:

@ebms = ModelName.where("<conditions>") 

Его простой, как и вы можете изменить ваш частичный поэтому его eaven оказывается, если @ebms не определен или ноль ...

<table class="table table-striped"> 
<tr> 
<th>Nummer:</th> 
<th>Text:</th> 
<th>Beschreibung:</th> 
<th></th> 
<th></th> 
</tr> 
<% if defined?(@ebms) && [email protected]? %> 
    <% for ebm in @ebms do %> 
    <tr> 
    <td><%= ebm.number %></td>  
    <td><%= ebm.text %></td> 
    <td><%= ebm.content %></td> 
    <td><%= ebm.star %></td> 
    <td><%= link_to 'Star', set_star_path(ebm), method: :put, confirm: 'Are you sure?' %> </td> 
    </tr> 
    <% end %> 
<% end %> 
</table> 
+0

, можете ли вы дать мне код? –

+0

см. Редактировать, ...... – davidb