Перенаправить на другую страницу в Ruby on Rails - PullRequest
0 голосов
/ 27 сентября 2018

Я хочу перенаправить на другую страницу admin_antenna_reader_rfids_path в конце метода create.Я сделал:

def create
    @antenna_reader_rfid = AntennaReaderRfid.new(antenna_reader_rfid_params)
      if @antenna_reader_rfid.save
        render json: {status: true}
        redirect_to admin_antenna_reader_rfid_path(q@antenna_reader_rfid)
      else
        render json: {errors: @antenna_reader_rfid.errors.full_messages, status: false}
    end
  end

Я получаю сообщение об ошибке AbstractController :: DoubleRenderError:

Рендеринг и / или перенаправление были вызваны несколько раз в этом действии.Обратите внимание, что вы можете вызывать только перенаправление render или не более одного раза за действие.Также обратите внимание, что ни перенаправление, ни рендеринг не прекращают выполнение действия, поэтому, если вы хотите выйти из действия после перенаправления, вам нужно выполнить что-то вроде «redirect_to (...) и return».

Как я могу решить это?

Ответы [ 3 ]

0 голосов
/ 27 сентября 2018

Вы не можете рендерить или возвращать более одного раза в методе.

0 голосов
/ 27 сентября 2018

Для обработки нескольких форматов запросов вы можете использовать response_to

if @antenna_reader_rfid.save
  respond_to do |format|
    format.json { render json: { status: true } }
    format.html { redirect_to where_you_want_path }
  end
else
  # same way as above
end

В блоке respond_to вы можете отобразить все форматы запросов, как хотите, а затем на основеЗаголовок запроса, контроллер выберет соответствующую логику, чтобы ответить вам.

0 голосов
/ 27 сентября 2018

Вы должны удалить строку render json: {status: true}, так как в настоящее время вы пытаетесь заставить свой контроллер отображать json и перенаправлять на страницу HTML одновременно.Вы должны выбрать один.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...