【发布时间】:2026-01-14 00:05:01
【问题描述】:
我们如何在活动控制器(又名新闻源)中包含 Facebook 个人资料图片?
class ActivitiesController < ApplicationController
def index
@activities = PublicActivity::Activity.order("created_at desc").where(owner_id: current_user.following_ids, owner_type: "User")
end
end
我从 user.rb 获得个人资料图片:
def self.from_omniauth(auth)
where(provider: auth.provider, uid: auth.uid).first_or_initialize.tap do |user|
user.provider = auth.provider
user.image = auth.info.image #specifically this line &
user.uid = auth.uid #specifically this line
user.name = auth.info.name
user.oauth_token = auth.credentials.token
user.oauth_expires_at = Time.at(auth.credentials.expires_at)
user.password = (0...8).map { (65 + rand(26)).chr }.join
user.email = (0...8).map { (65 + rand(26)).chr }.join+"@mailinator.com"
user.save!
end
end
活动指数
<% @activities.each do |activity| %>
<% if @user.uid %>
<%= image_tag @user.image %>
<% else %>
<%= gravatar_for @user %>
<% end %>
<%= link_to activity.owner.name, activity.owner if activity.owner %>
<%= render_activity activity %>
<% end %>
我目前收到此错误:undefined method 'uid' for nil:NilClass
- public_activity: http://railscasts.com/episodes/406-public-activity
- omniauth: http://railscasts.com/episodes/360-facebook-authentication
感谢您的专业知识!
【问题讨论】:
-
错误提示
@user不存在。您需要在控制器中加载@user。喜欢@user = current_user如果你正在使用设计 -
@kartikluke 很接近,但
@user需要是发帖的用户,而不是查看帖子的current_user。谢谢你至少有一张个人资料图片显示 - 让我们得到正确的 =) -
我从经验中举了一个例子。有关错误类型的帮助,以便您更好地调试它。
标签: ruby-on-rails ruby model-view-controller omniauth public-activity