【问题标题】:Rails, AJAX, dropzone, and carrierwave, handling redirectRails、AJAX、dropzone 和carrierwave,处理重定向
【发布时间】:2016-08-18 01:26:06
【问题描述】:
def create
  @listing = current_user.listing.new(listing_params)
  if @listing.save
    if params[:attachment]
      params[:attachment].each do |key, val|
        @listing.attachments.create(attachment: val)
      end
    end
    respond_to do |format|
      format.json { render json: @listing }
    end
  end
end

所以我在列表的创建控制器中有该代码,并且我正在使用 dropzone JS 来制作图像和视频附件。就创建对象而言,一切都很好,但是,在提交表单后,我似乎无法弄清楚如何让表单重定向到新创建的列表。 ajax 请求是 GET 请求,而不是 POST 请求,因为该对象已经由控制器中的 create 操作创建,使其成为 POST 请求最终会创建两个对象。我尝试在具有窗口位置的控制器中使用渲染 JS,但什么也没有,或者我收到错误消息,指出格式不正确。这是我的 JS:

$('#new_listing').on('submit', function(e){
  e.preventDefault();
  e.stopPropagation();
  myDropzone.processQueue();
  var form = $(this);
  var post_url = form.attr('action');
  $.ajax({
      type: "GET",
    url: post_url,
    dataType: "JSON",
    success: function(data) {
      console.log(data)
    }
  });
});

【问题讨论】:

    标签: jquery ruby-on-rails ruby ajax dropzone.js


    【解决方案1】:

    如果您想知道如何更改当前页面,请使用:

    location.href = "http://www.website.com/new_listing"

    success 函数内,用于在列表创建后引导浏览器转到新 URL。这与单击带有该 URL 的链接相同。我猜您从服务器收到的数据包含新列表,您将使用它来格式化 URL。

    【讨论】:

    • 我最终做了类似的事情,我必须让控制器通过 JSON 呈现列表 ID 并将其传递给 JS 中的成功函数并将其传递给 location.href。
    • 我正在尝试一次在 Amazone s3 上上传超过 5 张图片,而我的 AJAX 代码位于 success 块中。如果我选择 4 张图片并上传会发生什么,它正在工作。但是如果我上传超过 4 张图片,它会上传但不会在success 块中获得回调。你知道为什么吗?
    猜你喜欢
    • 2011-05-09
    • 2010-12-20
    • 2012-06-25
    • 2023-03-14
    • 2015-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-22
    相关资源
    最近更新 更多