0

現在のユーザーの受信トレイ メッセージを返す次のコントローラー アクションがあります (メールボックスを使用しています)。

 def index
    @conversations = mailbox.inbox
    render  :template => "/api/communications/index.json.jbuilder"
  end

これにより、jbuilder が起動する json 応答がレンダリングされます。

json.array!(@conversations) do |conversation|
    json.id conversation.id
    json.sender conversation.last_sender.name
    json.subject conversation.subject
    json.body conversation.last_message.body
    json.current_user_id current_user.id
    json.current_user_name current_user.name
    json.admin current_user.is_admin?
end

application_controller で宣言されたヘルパー メソッドである current_user から構築された最後の 3 つの json 値に注意してください。ここで 2 つの質問があります。

1) この種の機能はありますが、current_user の値を配列から切り離した方がよいでしょう。それらを単にブロックの外に移動すると、次のエラーが発生します。

TypeError (文字列を整数に変換できません)

2) current_user の受信トレイに会話がない場合、配列は空になり (@conversations は空白)、current_user の値は渡されません。

要約すると、 current_user 値を既存の配列に追加したり、 current_user 値を空の配列に追加したりできますか?

4

1 に答える 1

0

別のルートを埋め込んだ

json.user do |user|
  json.current_user_id current_user.id
  json.current_user_name current_user.name
  json.admin current_user.is_admin?

    json.conversations do |json|
      json.array!(@conversations) do |conversation|
        json.id conversation.id
        json.sender conversation.last_sender.name
        json.subject conversation.subject
        json.body conversation.last_message.body
      end
    end
end
于 2013-08-30T15:06:24.110 に答える