我有一个Rails应用程序,我可以将图像上传到Amazon S3。这是通过Carrierwave通过一个带有许多隐藏值的表单来完成的,用于保存图像的特定属性(例如与之关联的项目等):
当前图片上传表格
<%= semantic_form_for Image.new do |image_form| %>
<%= image_form.input :project_id, :as => :hidden, :label => false, :input_html => {:value => @project.id} %>
<% if @step.new_record? %>
<%= image_form.input :step_id, :as => :hidden, :label => false, :input_html => {:value => -1} %>
<%= image_form.input :saved, :as => :hidden, :label => false, :input_html => {:value => false} %>
<% else %>
<%= image_form.input :step_id, :as => :hidden, :label => false, :input_html => {:value => @step.id} %>
<%= image_form.input :saved, :as => :hidden, :label => false, :input_html => {:value => true} %>
<% end %>
我正在研究将图像上传到后台任务。我理解,如果我使用Carrierwave-direct,那么我需要在自己的direct_upload_form中提交图像,而direct_upload_form不能传递我当前拥有的任何隐藏值。我也知道,当图像成功发送到Amazon S3后,我可以调用 success_action_redirect 方法重定向到URL:
新图片上传表格
<%= direct_upload_form_for @uploader do |f| %>
<p><%= f.file_field :image_path %></p>
<p><%= f.submit "Upload Image" %></p>
<% end %>
用于图片上传的新控制器方法
def index
@uploader = Image.new.image_path
@uploader.success_action_redirect = update_image_attributes_url
end
我想要做的是让图像自动保存,保存原始形式的所有不同隐藏值(无需重定向到我需要手动填写表单并单击提交的页面)。
我想这样做的方法是重定向到带有用于编辑特定图像记录的表单的视图,并在加载页面时自动触发提交按钮。但我不希望用户在重定向到此页面时看到空白页面。
在将图像上传到Amazon S3后,如何让success_action_redirect触发某些AJAX?这样的事情会起作用吗?
<%= direct_upload_form_for @uploader, :remote=> true do |f| %>
<p><%= f.file_field :image_path %></p>
<p><%= f.submit "Upload Image" %></p>
<% end %>
或者通常有更好的方法吗?