Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 重定向,然后渲染_Ruby On Rails - Fatal编程技术网

Ruby on rails 重定向,然后渲染

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

好的,很快,我用一个文件上传插件来上传我的图片。插件需要服务器做出某种响应,我想发回一个空的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 

结束

如果您使用的上传插件需要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。谢谢。如果我的回答对你原来的问题有帮助,请接受?谢谢