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、(おそらく) 存在しないインスタンス変数にアクセスしようとしています。@mapmap

代わりにこれを試してください:

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

使用したい変数 map はインスタンス変数ではありません。これはローカル変数なので、「@map.map.url」の代わりに「map.url」を使用する必要があります

于 2013-06-15T21:45:32.873 に答える
0

コード行は<td><%= image_tag @map.map.url %></td>インスタンス変数を使用して@mapいますが、列挙子のスコープ内にいます<% @maps.each do |map| %>map.urlの代わりにローカル変数を使用する必要があり@map.map.urlます。

于 2013-06-15T21:49:20.110 に答える