控制器动作被调用两次

时间:2010-10-14 05:29:23

标签: ruby-on-rails controller action halting-problem

我注意到,我的控制器的“索引”动作被调用了两次。

该行动具有以下结构:

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”,点击它们我得到“索引”动作,被叫两次

我不知道,为什么会发生这种情况......

2 个答案:

答案 0 :(得分:5)

我已经明白了。

这种行为的原因是JavaScript代码,在页面加载后调用。此代码实现了页面某些部分的深层链接。

小心这一点。

感谢。

答案 1 :(得分:0)

我遇到了类似的问题,在我们的案例中,如果pjax在6s内没有完成,那么它是一个违规的pjax代码,超时6次会产生一个额外的请求(即一个额外的常规HTML请求)。