好的,非常快,我正在使用文件上传插件http://plugins.krajee.com/file-input来上传我的图片。该插件需要服务器的某种响应,我想发回一个空的json对象。
但是当图片上传时,我还需要立即重定向到另一个地方,以便人们可以对订单进行更改。
Rails说我不能使用渲染和重定向,但是说我可以重定向并返回。 我如何重定向并返回空的json对象?
def create
if !params[:images].nil?
package = Package.first
@photos = Array.new
@order = current_user.orders.new
@order.save
@order.order_items.each{|d| d.delete} #Stupid hack to prevent creation of fake order items. Don't know what is causing this yet
params["images"].each do |i|
photo = current_user.photos.create
photo.write(i.original_filename, i.read)
photo.save
@order.order_items.create(photo_id: photo.id, size_id: package.size_id, material_id: package.material_id)
end
redirect_to edit_order_path(@order) and return
else
flash[:danger] = "Please select at least one photo to upload"
redirect_to upload_photos_path
end
端
答案 0 :(得分:0)
如果您正在使用的上传插件需要JSON响应并且您希望在成功上传后重定向,那么您需要在客户端进行此操作。
如果您不使用Rails 4或Turbolinks,只需通过window.location.replace
重定向即可。从您的Rails代码看起来您是批量上传,在这种情况下,您需要根据the docs
filebatchuploadsuccess
事件分配回调
示例:
$('#fileinputid').on('filebatchuploadsuccess', function(event, data, previewId, index) {
// files have been successfully uploaded, redirect
window.location.replace( '/your_path_here' );
});
如果您使用的是Turbolinks,则上述代码将完全相同,只是代替window.location.replace
,您可以使用Turbolinks.visit
示例:
$('#fileinputid').on('filebatchuploadsuccess', function(event, data, previewId, index) {
// files have been successfully uploaded, redirect
Turbolinks.visit( '/your_path_here' );
});