我注意到,我的控制器的“索引”动作被调用了两次。
该行动具有以下结构:
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”,点击它们我得到“索引”动作,被叫两次
我不知道,为什么会发生这种情况......
答案 0 :(得分:5)
我已经明白了。
这种行为的原因是JavaScript代码,在页面加载后调用。此代码实现了页面某些部分的深层链接。
小心这一点。
感谢。
答案 1 :(得分:0)
我遇到了类似的问题,在我们的案例中,如果pjax在6s内没有完成,那么它是一个违规的pjax代码,超时6次会产生一个额外的请求(即一个额外的常规HTML请求)。