1

One Month Rails チュートリアルを完了したところです。これが私が構築した Web サイトです: https://warwicktri.herokuapp.com/。今、Instagram フィードをホームページに取り込もうとしていますが、ローカルホストの Pins#index で NoMethodError が発生します。

undefined method `each' for nil:NilClass

<div>
  <% @instagram.each do |instagram| %>
    <%= image_tag instagram.images.first.last.url %>
  <% end %>
</div>

@instagram がきちんと宣言されていないということだと思いますが、どこが間違っていたのかわかりません。

これは私のpins_controller.rbのコードです:

def index
  @pins = Pin.all.order("created_at DESC").paginate(:page => params[:page], :per_page => 5)
  respond_with(@pins)
  @instagram = Instagram.user_recent_media("264208635")
  respond_with(@instagram)
end

代わりに @instagram を別のコントローラーに入れてみましたが、それでも同じエラーが発生します。

class InstagramController < ApplicationController
  def index
    @instagram = Instagram.user_recent_media("264208635")
    respond_with(@instagram)
  end
end

コードで @instagram を宣言するにはどうすればよいですか?

更新 1: ビュー (index.html.erb) の私のコード:

<div id="pins" class="transitions-enabled">
  <% @pins.each do |pin| %>
    <div class="box panel panel-default">
      <%= link_to image_tag(pin.image.url(:medium)), pin %>
      <div class="panel-body">
        <p><%= pin.description %></p>
        <p><strong><%= pin.user.name if pin.user %></strong></p>
        <% if pin.user == current_user %>
          <div class="actions">
            <%= link_to edit_pin_path(pin) do %>
              <span class="glyphicon glyphicon-edit" aria-hidden="true"></span> Edit
            <% end %>
            <%= link_to pin, method: :delete, data: { confirm: 'Are you sure?' } do %>
              <span class="glyphicon glyphicon-trash" aria-hidden="true"></span> Delete
            <% end %>
          </div>
        <% end %>  
      </div>
    </div>
  <% end %>
</div>

<div class="center">
  <%= will_paginate @posts, renderer: BootstrapPagination::Rails %>
</div>

<div>
    <% @instagram.each do |instagram| %>
      <%= image_tag instagram.images.first.last.url %>
    <% end %>
</div>
4

1 に答える 1