附加到现有/空白数组

时间:2013-08-30 11:19:46

标签: ruby-on-rails-3.2 jbuilder

我有以下控制器操作,它返回当前用户收件箱邮件(我正在使用邮箱):

 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

注意最后3个json值是由current_user构建的,这是我在application_controller中声明的辅助方法。我在这里有两个问题:

1)虽然这种方法有效,但最好将current_user值从数组中分离出来。如果我只是将它们移出块,我会收到以下错误:

  

TypeError(无法将String转换为整数)

2)如果current_user在其收件箱中没有会话,则数组将为空(@conversations为空),因此不传递current_user值。

所以回顾一下:我可以将current_user值附加到现有数组,并且可以将current_user值附加到空数组吗?

1 个答案:

答案 0 :(得分: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