新注释w / ajax - owner_id在请求参数之前不会刷新页面

时间:2013-06-04 19:16:53

标签: ajax ruby-on-rails-3.1

我有一个评论表格,附在“部分”的“修订版”上。如果不存在修订,则创建一个空修订。添加注释表单加载了ajax。问题是,如果在不刷新页面的情况下添加了多个注释,则会创建几个空修订。这会在某些边缘情况下造成严重破坏。

每次点击添加评论按钮时,我都会使用ajax请求新的添加评论表单。但是,Rails认为没有新的信息并且服务304没有被修改。有新信息 - 第二个请求上的评论表格应该有一个填充的“owner_id”,它是第一个评论创建的空修订版的ID。

我很肯定owner_id人口的工作方式是刷新整个页面来修复问题。我以前认为这是一个服务器缓存问题,但查看请求的参数,在页面刷新之前,owner_id将丢失。

更新:我将expire_now()添加到评论控制器上的新操作,它现在提供200响应,但内容仍然没有owner_id。

另一个更新:在控制台中查看请求的参数不包含owner_id。刷新页面然后请求表单突然在参数中包含owner_id。

1 个答案:

答案 0 :(得分:0)

我仍然不确定这方面的细节,但是ajax请求在很多方面与页面请求不同。例如,仅使用ajax请求视图时,控制器代码不会更新。在我的例子中,没有将owner_id作为ajax视图的填充参数。

在评论控制器的新操作中,我不得不手动查询该部分以查看是否有修订,如果是,请将owner_id设置为修订版ID。

def new
  # precaution against creating multiple empty revisions if user adds multiple comments without refreshing page
  if params[:owner_id].nil?
    revision = @section.send(params[:snip_type]).first
    unless revision.nil?
      @comment.owner_id = revision.id
    end
  end
end