我在我的项目中使用Rails 4.0.2
和paperclip
进行图片上传。另外,我需要发送回形针的完整图像路径。所以我可以通过添加新字段并在我的show
控制器方法中手动设置图像路径来进行特定记录。
显示
def show
respond_to do |format|
format.html
format.json { :json => JSON::parse(@demo.to_json.merge("new_field" => @demo.image_url.url).to_json}
end
end
当我查看Json的任何记录时,这将显示良好。
{
id: "1",
name: "demo",
new_field: "/demo/1/original/file.jpg"
}
在同一场景中,当我在index
controller
方法时,我需要获取所有记录的回形针图像的完整图像路径
索引
def index
@demos = Demo.all
respond_to do |format|
format.html
format.json { :json => Demo.all.to_json}
end
end
我尝试了一些代码,但我不知道如何编写
def index
@demos = Demo.all
@demos.each do |demo|
new_field = {"new_field" => @demo.image_url.url}
# After I stucked with logic, how to uppend with 'demo'.
end
respond_to do |format|
format.html
format.json { :json => Demo.all.to_json}
end
end
如何迭代我的个人Demo
模型以及如何将完整图像路径合并到每个记录中。
答案 0 :(得分:3)
我找到了问题的解决方案,
def index
@demos = Demo.all
@demos_data = []
@demos.each do |demo|
new_field = {"new_field" => @demo.new_field.url}
demo = JSON::parse(demo.to_json).merge(new_field)
@demos_data << demo
end
respond_to do |format|
format.html
format.json { :json => @demos_data}
end
end
答案 1 :(得分:0)
我建议你使用两种方法,1)使用主动模型序列化器来暴露json响应。 2)使用jbuilder库来公开自定义字段。你还需要帮助,请告诉我。
答案 2 :(得分:0)
试试这个: -
def index
@demos = Demo.all
@demos_data = []
@demos.each do |demo|
demo["new_field"] = @demo.image_url.url
@demos_data << demo
end
respond_to do |format|
format.html
format.json { :json => @demos_data}
end
end
答案 3 :(得分:0)
也许你可以试试:
def index
@demos = Demo.all
@demos.map do |demo|
new_field = {"new_field" => @demo.image_url.url}
demo.attributes.merge(new_field)
end
respond_to do |format|
format.html
format.json { :json => @demos}
end
end
attributes
方法返回所有对象属性的哈希值,只需要将新的键值合并到返回的哈希值中。
答案 4 :(得分:0)
另一种实现方法是在呈现json的控制器中
render json: @merchants,
include: {
offers: {
except: [:created_at, :updated_at],
include: {
categories: {
except: [:created_at, :updated_at]
}
}
},
location: {
methods: :country_name,
except: [:created_at, :updated_at]
}
},
except: [:created_at, :updated_at]
请注意methods: :country_name
,您可以在其中将模型中的方法呈现为json属性。并通过include: ...
可以渴望加载和渲染相关模型。