Ruby on rails 重定向,然后渲染
好的,很快,我用一个文件上传插件来上传我的图片。插件需要服务器做出某种响应,我想发回一个空的json对象 但是当图像上传时,我还需要立即重定向到另一个地方,这样人们可以对顺序进行某种更改 Rails说我不能使用渲染和重定向,但说我可以重定向和返回。 如何重定向并返回空的json对象Ruby on rails 重定向,然后渲染,ruby-on-rails,Ruby On Rails,好的,很快,我用一个文件上传插件来上传我的图片。插件需要服务器做出某种响应,我想发回一个空的json对象 但是当图像上传时,我还需要立即重定向到另一个地方,这样人们可以对顺序进行某种更改 Rails说我不能使用渲染和重定向,但说我可以重定向和返回。 如何重定向并返回空的json对象 def create if !params[:images].nil? package = Package.first @photos = Array.new @order = current
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
结束如果您使用的上传插件需要JSON响应,并且您希望在成功上传后重定向,那么您需要在客户端执行此操作 如果您没有使用Rails 4或TurboLink,只需通过window.location.replace重定向即可。从Rails代码中可以看出,您正在批量上载,在这种情况下,您需要按照以下步骤为filebatchuploadsuccess事件分配一个回调 例如:
$('#fileinputid').on('filebatchuploadsuccess', function(event, data, previewId, index) {
// files have been successfully uploaded, redirect
window.location.replace( '/your_path_here' );
});
$('#fileinputid').on('filebatchuploadsuccess', function(event, data, previewId, index) {
// files have been successfully uploaded, redirect
Turbolinks.visit( '/your_path_here' );
});
如果您使用的是Turbolinks,上述代码将完全相同,只是您可以使用Turbolinks.visit而不是window.location.replace
例如:
$('#fileinputid').on('filebatchuploadsuccess', function(event, data, previewId, index) {
// files have been successfully uploaded, redirect
window.location.replace( '/your_path_here' );
});
$('#fileinputid').on('filebatchuploadsuccess', function(event, data, previewId, index) {
// files have been successfully uploaded, redirect
Turbolinks.visit( '/your_path_here' );
});
当文档/错误消息说redirect and return时,它们只是指从当前方法返回-浏览器收到的唯一响应是重定向。您可能需要一些客户端代码来执行重定向。啊,我认为返回类似于php返回..事实是,我是一名php开发人员,我只是站在那里帮助别人了解RoR代码。但是,让我看看我可以在客户端为重定向做些什么这应该可以工作…问题是,我想将用户重定向到需要order id作为参数的页面…现在既然我做了类似render的render:json=>@order,我该如何访问该json对象,然后我就可以直接将它们重定向到页面?我以为这是数据,但它不在那里。我已经弄明白了…我必须访问data.response.id。谢谢。如果我的回答对你原来的问题有帮助,请接受?谢谢