Как перенаправить в другой формат того же действия контроллера? - PullRequest
1 голос
/ 19 января 2020

У меня есть index метод в моем TasksController:

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

Как я могу отобразить html версию моего действия с индексом, если существует более 100 задач?

Мой код выше не работает. Вместо перенаправления и отображения сообщения fla sh он загружает файл html. Я не понимаю почему. Пожалуйста, помогите мне, если можете.

1 Ответ

6 голосов
/ 19 января 2020

Формат 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...