Действие контроллера вызывается дважды

Я заметил, что действие "index" моего контроллера вызывается дважды.

Акция имеет следующую структуру:

def index

  if params[:tags].nil?
     # [fork #1] just return the whole collection of model
     @items = Item.all
  else
     # [fork #2] filter items by tags
     @items = Item.select_by_tags params[:tags]
  end

  # Another operations with @items
  # The result will be incorrect, because, when tags in params are specified,
  # controller action will be first executed for fork #2, and then for fork #1.
  # In view, i get @items from fork #2 and result of THIS piece of code for fork #1
end

На странице у меня есть ссылки с URL-адресами, например, "/items? Tags=tag1, tag2", нажимая на них, я получаю действие "index", вызываемое дважды

Понятия не имею, почему это происходит...

3 ответа

Я понял это.

Причиной такого поведения был код JavaScript, вызываемый после загрузки страницы. Этот код реализует глубокие ссылки для некоторых частей страницы.

Будьте осторожны с этим.

Благодарю.

Я столкнулся с подобной проблемой, и в нашем случае это был оскорбительный код pjax с тайм-аутом 6 с, что привело к одному дополнительному запросу (т.е. одному дополнительному регулярному HTML-запросу), если pjax не завершился за 6 с.

Еще одна вещь, которую следует проверить, - это указано ли у вас PostCSS как зависимость в вашем package.json. Если вы делаете, и вы не имеете postcss.config.jsonфайл, исправьте это . Самый простой файл выглядит так:

      module.exports = {
    plugins: []
}

Перезагрузите сервер, перезагрузите страницу и проверьте журнал сервера. Должен быть зарегистрирован только один запрос как обработанный.

Очень поздно на вечеринку, но надеюсь, что это кому-то поможет. Я временно застрял в тривиальном приложении Rails 6.1.4.1, видя журнал.

Другие вопросы по тегам