0

这将是我今天的最后一个问题(对不起,如果我问得太快了)

我收到错误undefined method 'map' for nil:NilClass

它说问题出在这一行:<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 %>

地图控制器,索引:

  def index
    @maps = Map.all

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

3 回答 3

1

在您的循环中,当您应该访问循环本地的变量时@maps.each,您正在尝试访问(可能)不存在的@map实例变量。map

试试这个:

<% @maps.each do |map| %>
  <tr>
    ...
    <td><%= image_tag map.map.url %></td>
    ...
  </tr>
<% end %>
于 2013-06-15T22:02:07.437 回答
0

您希望使用的变量 map 不是实例变量。它是一个局部变量,所以你应该使用 'map.url' 而不是 '@map.map.url'

于 2013-06-15T21:45:32.873 回答
0

您的代码行<td><%= image_tag @map.map.url %></td>使用了一个实例变量@map,但您在 enumerator 的范围内<% @maps.each do |map| %>。您应该使用map.url局部变量而不是@map.map.url.

于 2013-06-15T21:49:20.110 回答