控制器动作被调用两次
问题描述:
我注意到,我的控制器的“指数”行动被称为两次。控制器动作被调用两次
行动有以下结构:“/物品标签=标签1,标签2”
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
在页面上我有网址链接一样,点击它们,我得到“指数”行动,叫了两声
我不知道,为什么出现这种情况?
答
我已经想通了。
这种行为的原因是一个JavaScript代码,页面加载后调用。这段代码实现了页面某些部分的深层链接。
注意此点。
谢谢。
+0
嗨,我注意到相同的行为,我的控制器操作将一些数据保存到数据库,我的视图上的JavaScript代码调用此操作两次,导致在数据库中创建2条记录。当我在视图中注释掉
答
我面临着类似的问题,在我们的情况下,它是与产生一个额外的请求(即一个额外的普通HTML请求)如果pjax没有在6S完整超时6S违规pjax代码。
什么是你有,这是被称为两次证据? – 2010-10-14 05:39:29
我们可以看到开发日志吗? – Eimantas 2010-10-14 05:45:26
谢谢。我已经知道了。我在场景后面进行了AJAX调用,这是在页面加载后执行的。 – AntonAL 2010-10-14 05:58:21