Ruby on rails 以尽可能少的步骤上传S3
因此,我设置了我的应用程序,将文档上传到S3(遵循Ryan Bates的railscast)。目前,文档资源的索引页上有一个上传文件的表单。成功上传到S3后,该表单将呈现新的操作,用户可以在其中重命名文件(在本地命名) 但是我想重构它,以避免将用户重定向到“/new”页面。我不想给用户提供重命名文件的机会 必须有一种方法将文件上传到S3,然后将其发布到创建操作 这就是我的控制器现在的样子Ruby on rails 以尽可能少的步骤上传S3,ruby-on-rails,amazon-s3,Ruby On Rails,Amazon S3,因此,我设置了我的应用程序,将文档上传到S3(遵循Ryan Bates的railscast)。目前,文档资源的索引页上有一个上传文件的表单。成功上传到S3后,该表单将呈现新的操作,用户可以在其中重命名文件(在本地命名) 但是我想重构它,以避免将用户重定向到“/new”页面。我不想给用户提供重命名文件的机会 必须有一种方法将文件上传到S3,然后将其发布到创建操作 这就是我的控制器现在的样子 class DocumentsController < ApplicationController
class DocumentsController < ApplicationController
before_filter :authenticate_user!
def index
@page_title = "Docs"
@documents = household.documents.all
@uploader = Document.new.file_upload
@uploader.success_action_redirect = new_document_url
end
def new
@page_title = "New Doc"
@document = Document.new(household_id: household.id, key: params[:key])
end
def create
@doc = Document.new(params[:document])
if @doc.save
flash[:notice] = "Consider it done!"
redirect_to documents_path
else
flash[:notice] = "Oops. Please try again."
render 'new'
end
end
end
但是我不知道它应该是什么。也许您可以在
DocumentsController
中创建一个用作REST端点的方法。您可以通过Ajax从客户机发布,然后通过endpoint方法上传到S3。这样,客户端的体验在上传时保持不变
大概是这样的:
def upload
uploader = Document.new(params_from_ajax_post).file_upload
respond_to do |format|
format.html { render :json => {:message => 'Upload successful.'} }
end
end
在routes.rb中
:
match 'documents/upload' => 'documents#upload', :via => :post, :as => 'upload'
你想做什么?对不起,我不清楚。我编辑了帖子,添加了我只想发布到创建操作,而不是在上传文件后让用户登录/new。基本上,我希望用户在整个时间内都保持在/index上。我更愿意让客户端负责上传。我不同意。你说你想让用户发帖,但保持在同一页上。REST端点解决方案就是这样做的。如果没有重定向,您将使用
@uploader
执行与现在相同的操作。
match 'documents/upload' => 'documents#upload', :via => :post, :as => 'upload'