response_to от дочернего контроллера - PullRequest
0 голосов
/ 03 января 2019

В настоящее время я занимаюсь модификацией проекта rails с открытым исходным кодом, и я хочу сделать некоторые экспорты в проекте после того, как после многих учебных пособий и рекомендаций я получаю ошибку UnknownFormat, затем я понимаю, что в родительском контроллере для всех контроллеров проекта "application_controller.rb"было задано по умолчанию response_to, например:

rescue_from CanCan::AccessDenied do |exception|
    respond_to do |format|
        format.html { redirect_to main_app.root_url, alert: exception.message }
        format.json { render json: {error: exception.message}, status: :forbidden }
    end
end

, тогда я решил превратить его в эту

rescue_from CanCan::AccessDenied do |exception|
    respond_to do |format|
        format.html { redirect_to main_app.root_url, alert: exception.message }
        format.json { render json: {error: exception.message}, status: :forbidden }
       format.csv
       format.xls
    end
end

ошибка неизвестного формата прекратилась, но тогда я не могу контролировать, что делатьв дочернем контроллере код, кажется, игнорирует мой метод нестандартного формата и старается искать шаблон csv и отображать его, дочерний контроллер имеет следующее:

respond_to do |format|
    format.html
    format.csv { send_data @users.to_csv }
    format.xls
end

я не очень опытен в рельсахя имею в виду, что это мой первый проект, и я начинаю с модификации существующего, так что я понятия не имею, что мне делать, чтобы сказать applicationaation_controller распознавать формат csv и xls, но только если дочерний контроллер отвечает на этот формат.

1 Ответ

0 голосов
/ 04 января 2019

Я бы посмотрел, почему CanCan отказано в доступе. Мое первоначальное предположение состоит в том, что вы не хотите обслуживать CSV, когда пользователю отказано. Этот метод предназначен для предотвращения несанкционированного доступа, поэтому, как только вы установили доступ, вы можете настроить контроллер так, чтобы он соответствовал желаемому маршруту .csv.

...