Действие контроллера вызывается дважды - PullRequest
4 голосов
/ 14 октября 2010

Я заметил, что "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", вызываемое дважды

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

Ответы [ 2 ]

5 голосов
/ 15 октября 2010

Я понял это.

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

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

Спасибо.

0 голосов
/ 11 июля 2017

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

...