如何重定向到同一控制器操作的另一种格式?

How to redirect to another format of the same controller action?

我的 TasksController 中有这个 index 方法:

def index
  @tasks = current_account.tasks
  @count = @tasks.length
  respond_to do |format|
    format.html do
      ...
    end
    format.zip do
      if @count > 100
        flash[:notice] = "Please reduce the number of tasks!"
        redirect_to :action => "index", :format => "html"
      else
        DownloadArchive.call(@tasks)
      end
    end
  end
end

如果有超过 100 个任务,我如何呈现索引操作的 html 版本?

我上面的代码不起作用。它不会重定向并显示一条闪现消息,而是下载 html 文件。我不明白为什么。如果可以,请帮助我。

Format zip 将下载一个文件,无论您在块中传递什么。如果您想确定 zip 文件是否可以下载,您需要在处理格式 zip 请求之前执行此操作。您可能需要更改视图代码以不显示下载按钮或处理 zip 请求的任何内容。

def index
  @tasks = current_account.tasks
  @count = @tasks.length

  if @count > 100
    flash[:notice] = "Please reduce the number of tasks!"
    redirect_to :index and return
  end

  respond_to do |format|
    format.html do
      ...
    end
    format.zip do
        DownloadArchive.call(@tasks)
      end
    end
  end
end