0

我正在尝试将模型作为 json 发送。该模型在其中一列中有二进制数据。对于我使用过的另一个模型

format.json {self.encode64(@resource_type.data).to_json}

成功了,但在那种情况下,我只想要数据列,而不是标题等。当我想要几列的内容时,我该怎么办,其中只有一列的内容应该用 encode64 编码?

在下面的代码中,我不知道将 self.encode64 方法放在哪里。

format.json { render :json => @resource.to_json(:only => [:id, :title, :data])}

我怎样才能做到这一点?

4

2 回答 2

1

您在这里有几个选择。

您可以data_base64向模型添加一个返回database-64 格式的方法,然后在控制器中使用该:methods选项:to_json

@resource.to_json(:only => [ :id, :title ], :methods => :data_base64)

这将为您提供data_base64JSON 中的密钥,而不是data但这可能不是问题。

您还可以使用as_json获取哈希并修复控制器中的编码:

json = @resource.as_json(:only => [ :id, :title, :data ])
json['resource']['data'] = self.encode64(json['resource']['data'])
render :json => json
于 2012-04-29T21:03:12.777 回答
0

您可以as_json在模型中使用这样来覆盖此行为

def as_json(options={})
  { :name_of_resource => { :created_at => created_at, binary => encode64(self.data) } }
end

您需要指定他应该如何将整个模型序列化为 json。

干杯!

于 2012-04-29T21:00:18.793 回答