2013-06-15 2 views
0

Это будет мой последний вопрос на сегодня (извините, если я прошу слишком быстро)неопределенный метод `карта» для ноль: NilClass в Rails с Скрепка

Я получаю ошибку undefined method 'map' for nil:NilClass

It говорит, что проблема находится на этой линии: <td><%= image_tag @map.map.url %></td>

весь код индекса находится ниже:

<h1>Listing maps</h1> 

<table> 
    <tr> 
    <th>Carname</th> 
    <th>Map</th> 
    <th>Criticalcomponentlocations</th> 
    <th>Warnings</th> 
    <th>Additionalinfo</th> 
    <th></th> 
    <th></th> 
    <th></th> 
    </tr> 

<% @maps.each do |map| %> 
    <tr> 
    <td><%= map.carname %></td> 
    <td><%= image_tag @map.map.url %></td> 
    <td><%= map.criticalcomponentlocations %></td> 
    <td><%= map.warnings %></td> 
    <td><%= map.additionalinfo %></td> 
    <td><%= link_to 'Show', map %></td> 
    <td><%= link_to 'Edit', edit_map_path(map) %></td> 
    <td><%= link_to 'Destroy', map, method: :delete, data: { confirm: 'Are you sure?' } %></td> 
    </tr> 
<% end %> 
</table> 

<br /> 

<%= link_to 'New Map', new_map_path %> 

Maps Controller, индекс:

def index 
    @maps = Map.all 

    respond_to do |format| 
     format.html # index.html.erb 
     format.json { render json: @maps } 
    end 
    end 

ответ

1

В вашем @maps.each цикла, вы пытаетесь получить доступ к (вероятно) несуществующему переменной @map экземпляра, когда вы должны получать доступ к map переменным, которая является локальной для вашего цикла.

Попробуйте вместо этого:

<% @maps.each do |map| %> 
    <tr> 
    ... 
    <td><%= image_tag map.map.url %></td> 
    ... 
    </tr> 
<% end %> 
+1

Ну, теперь я получаю 'неопределенный метод' URL»для ноль: NilClass' –

+0

Что такое содержание' index' действия вашей карты контроллера? Пожалуйста, разместите его на свой вопрос. – zeantsoi

+0

Выполнено, добавлено к вопросу –

0

Переменная, которую вы хотите использовать, map, не является переменной экземпляра. Это локальная переменная, поэтому вы должны использовать «map.url» вместо «@ map.map.url»

0

Ваша строка кода <td><%= image_tag @map.map.url %></td> использует переменную экземпляра @map, но вы попадаете в область перечислителя <% @maps.each do |map| %>. Вы должны использовать локальную переменную map.url вместо @map.map.url.

Смежные вопросы