Ruby on rails 从S3返回JSON
我目前正在rails中构建一个非常简单的API。我所需要做的就是在heroku上上传文本和图像,将上传的数据以JSON格式存储在S3上(所以我猜保存时会将其呈现为JSON?),然后通过AJAX将这些数据拉到我的前端。我正在使用回形针和“aws sdk”gem,我正在成功地将图像保存到我的S3存储桶中,我只需要将其序列化为JSON 在我的控制器中,我有:Ruby on rails 从S3返回JSON,ruby-on-rails,json,heroku,amazon-s3,paperclip,Ruby On Rails,Json,Heroku,Amazon S3,Paperclip,我目前正在rails中构建一个非常简单的API。我所需要做的就是在heroku上上传文本和图像,将上传的数据以JSON格式存储在S3上(所以我猜保存时会将其呈现为JSON?),然后通过AJAX将这些数据拉到我的前端。我正在使用回形针和“aws sdk”gem,我正在成功地将图像保存到我的S3存储桶中,我只需要将其序列化为JSON 在我的控制器中,我有: def create @project = Project.new(project_params) render :json =
def create
@project = Project.new(project_params)
render :json => @project
@project.save
redirect_to @project
end
我的模型:
class Project < ActiveRecord::Base
has_attached_file :photo, :styles => { :small => "300x300>", :thumb => "100x100>" }, :default_url => "/images/:style/missing.png"
validates_attachment_content_type :photo, :content_type => /\Aimage\/.*\Z/
end
目前,这只是将图像保存到我的bucket中的子文件夹中,我想将其保存到一个文件夹中,并将其呈现为JSON。我是rails的新手,所以如果我遗漏了什么,请道歉。谢谢据我所知,你已经有了回形针才能正常工作,所以你实际上已经有了所需的信息(它们由回形针保存),你只需要将它们呈现为JSON即可。您可以忽略曲别针创建的文件夹结构,gem在内部管理它并正确生成URL 如果需要JSON响应来响应来自控制器操作的API调用,只需执行以下操作:
render json: { name: @project.photo_file_name, url: @project.photo.url }
当然,您可以使用所需的任何参数来丰富JSON
这是一个过于简化的答案,要以“rails方式”实现这一点,您应该查看并创建JSON视图模板,与HTML模板相同。或者重写
。在您的模型中作为_json(options=nil)
,因此当您序列化它时,它将自动生成您所需的json格式。据我所知,您已经获得了回形针可以正常工作,因此您实际上已经拥有所需的信息(它们由回形针保存),您只需要将它们呈现为json即可。您可以忽略曲别针创建的文件夹结构,gem在内部管理它并正确生成URL
如果需要JSON响应来响应来自控制器操作的API调用,只需执行以下操作:
render json: { name: @project.photo_file_name, url: @project.photo.url }
当然,您可以使用所需的任何参数来丰富JSON
这是一个过于简化的答案,要以“rails方式”实现这一点,您应该查看并创建JSON视图模板,与HTML模板相同。或者重写
。\u json(options=nil)
在您的模型中,因此当您序列化它时,它将自动生成您需要的json格式。如果您想将图像数据序列化为json,则需要做出一些决定,这些决定与rails无关,但与图像数据是二进制的事实有关,因此您需要决定编码(例如Base64),以及如何准确地序列化为JSON,因为我不知道有什么标准方法。@taglia抱歉,我不清楚。我的意思是图像本身不需要转换,但我需要将URL连同文本和标题一起存储为JSON。在我的参数中,我尝试使用params.require之类的参数进行设置(:project).permit(:title,:text,:photo_url)但是我没有成功如果你想将图像数据序列化为JSON,你需要做一些决定,与rails无关,但与图像数据是二进制的事实有关,所以你需要决定编码(比如Base64),以及如何准确地序列化为JSON,因为我知道没有标准的方法。@taglia抱歉,我不清楚。我的意思是图像本身不需要转换,但我需要将URL连同文本和标题存储到JSON中。在我的参数中,我试着用params.require(:project.permit)之类的参数设置它(:标题,:文本,:照片\u url)但是我没有成功,谢谢你的回复。我想把这个JSON保存到s3上…这样我可以在以后向一个URL发出GET请求。理想情况下,这个URL将是我的JSON输出。目前,我保存操作中的代码只是停止了路径的工作…我可以在我的控制器中将它作为JSON呈现到heroku上,我需要做的是think本质上是将其导出为JSON,如果这样做有意义的话?在这种情况下,最简单的方法可能是使用file类从ruby core库本地构建一个包含所需信息的文本文件(查看示例)。一旦文件在本地创建,您必须将其上载到S3:鉴于您希望将所有这些文件放在同一文件夹中,直接使用AWS gem可能比使用回形针更容易。感谢您的响应。我想将此JSON保存到S3…以便稍后我可以向类似URL的URL发出GET请求。理想情况下,这是我将是我的JSON输出。目前,我的保存操作中的代码只是停止了路径的工作…我可以将其作为JSON呈现到我的控制器中的heroku上,我认为我需要做的是将其导出为JSON,如果这有意义的话?在这种情况下,最简单的方法可能是在本地构建一个包含您所需信息的文本文件需要,使用ruby core库中的File类(查看一个示例)。一旦文件在本地创建,您就必须将其上载到S3:鉴于您希望将所有这些文件放在同一文件夹中,直接使用AWS gem可能比使用回形针更容易。