用户#中的NoMethodError显示用户使用Facebook连接时

时间:2014-01-18 11:29:02

标签: ruby-on-rails facebook

当用户登录时尝试从facebook获取位置信息我收到此错误用户中的NoMethodError#show - 未定义方法`[]'表示nil:NilClass

IEWS /用户/ show.html.erb

<div class="container">
    <div class="row">
        <div class="col-lg-4">
            <div class="media">
                  <%= image_tag @user.get_profile_picture, class: "pull-left" %>
                        <div class="media-body">
                            <h4 class="media-heading"><%= @user.name %></h4>
                            from <%= @user.get_location %>
                        </div> 
                        <hr>
                        <div class="books">
                        <% @user.get_books.each do |book| %>
                            <p><%= book["name"] %></p>
                        <%end%> 
                        </div>
    </div>

    <div class="col-lg-6">
            <%= @user.posts.order("created_at DESC").each do |post| %><div class="post">

            <h5><%= post.title %></h5>
            <p><%= post.content %></p>
            <span class="pull-right label label-info"><%=time_ago_in_words(post.created_at) %> ago</span>
                        <% if post.user == current_user %>
                                <span class="pull-left"><%= link_to 'edit', edit_post_path(post), class: "btn btn-xs btn-primary" %> | <%= link_to 'destroy', post, method: :delete, data: {confirm: 'Are you sure?'}, class: "btn btn-xs btn-danger" %></span>
            <% end %>
        </div>
        <% end %>
    </div>
  </div> 
</div>

user.rb文件

def facebook 
  @facebook ||= Koala::Facebook::API.new(oauth_token)
end

def get_profile_info
  self.facebook.get_object("me")
end

def get_location
  h = get_profile_info["location"]
  h['name']
end 

def get_books
  self.facebook.get_connection("me", "books")
end

def get_profile_picture
  self.facebook.get_picture(uid)
end

这是users_controller.rb

class UsersController < ApplicationController

        before_action :set_user, only: [:show]

  def index
      @users = User.all 
  end

  def show 
  end

  private

  def set_user
      @user = User.find(params[:id])
  end
end

0 个答案:

没有答案