我正在尝试将模型作为json发送。该模型在其中一列中包含二进制数据。对于我使用的另一个模型
format.json {self.encode64(@resource_type.data).to_json}
成功,但在那种情况下我只想要数据列,而不是标题等。当我需要来自多个列的内容时,我该怎么办?其中只有一列的内容应该用encode64编码?
在下面的代码中,我不知道将self.encode64方法放在何处。
format.json { render :json => @resource.to_json(:only => [:id, :title, :data])}
我该怎么做?
答案 0 :(得分:1)
你有几个选择。
您可以向模型中添加data_base64
方法,该方法以base-64格式返回data
,然后在控制器中使用:methods
选项to_json
:< / p>
@resource.to_json(:only => [ :id, :title ], :methods => :data_base64)
这会在JSON而不是data_base64
中为您提供data
密钥,但这可能不是问题。
您还可以使用as_json
获取哈希并修复控制器中的编码:
json = @resource.as_json(:only => [ :id, :title, :data ])
json['resource']['data'] = self.encode64(json['resource']['data'])
render :json => json
答案 1 :(得分:0)
您可以在模型中使用as_json
来覆盖此行为,例如
def as_json(options={})
{ :name_of_resource => { :created_at => created_at, binary => encode64(self.data) } }
end
您需要指定他应该如何将整个模型序列化为json。
干杯!