Действие контроллера вызывается дважды
Я заметил, что действие "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, видя журнал.