1

そのため、iOS アプリのバックエンド サーバーとして機能する Rails アプリケーションがあります。私の Rails アプリケーションには、Users コントローラーと Avatars コントローラーがあります。ユーザーコントローラーはユーザーを処理し、アバターコントローラーはユーザーのプロフィール写真を処理します。ユーザーモデルとアバターモデルの関係は

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ループを使用して各アバターを追加しようとしたことです。 @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 に答える