1

所以我有一个 Rails 应用程序作为我的 ios 应用程序的后端服务器。我的 rails 应用程序有一个用户控制器和头像控制器。用户控制器负责处理用户,而头像控制器负责处理用户的个人资料图片。User 模型和 Avatar 模型之间的关系是

User has_one :avatar&Avatar belongs_to :user

每个用户has_many friends(用户模型)。现在我想获取每个用户的所有朋友并以 json 格式将其发送到我的 ios 客户端,所以我这样做了

@friends = @user.friends
@usernames = ""
for friend in @friends
    @usernames << friend.username + ","
end
respond_to do |format|
    format.json {render :json => @usernames}
end

for 循环是我只发送我需要的东西。它使数据更小更安全,因为我不发送他们的 auth_token。这工作正常,但现在我想做的是发送每个“朋友”头像。我所做的是我尝试使用for循环附加每个头像。图像(我使用 Carrierwave 上传我的数据和 Cloudinary 作为我的存储)到@avatars 变量并发送它但没有用。这是代码:

@friends = @user.friends
@usernames = ""
@avatars = ""
for friend in @friends
  @usernames << friend.username + ","
  @avatars << friend.avatar.image + ","
end
respond_to do |format|
    format.json {render :json => {users = @usernames, avatars = @avatars}}
end

这是我得到的错误 expecting tASSOC ...r :json =&gt; {users = @usernames, avatars = @avatars}}

4

2 回答 2

1

在您的代码中,您将拥有单独的头像和用户名,它们之间没有任何关系。您最好创建一个包含用户名和头像的用户哈希数组:

friends = []

@user.friends.each do |friend|
  friends << { username: friend.username, avatar: friend.avatar.image }
end

respond_to do |format|
  format.json { render :json => friends.to_json }
end
于 2013-09-05T05:17:27.683 回答
1

您收到的消息表明格式错误。相反,将您的 JSON 作为键值对传递:

format.json {render :json => {'users' => @usernames, 'avatars' => @avatars}}
于 2013-09-05T05:27:03.220 回答