执行save()后Rails返回过时的信息

时间:2011-11-23 09:28:20

标签: ruby-on-rails ruby activerecord

我有一个模型问题,其中有很多选项。

在一个动作中,我修改了一个Question对象的Options,然后将Question对象作为json返回。 (这用于ajax调用)。问题是,返回的json不是最新的,并不反映我所做的修改。

def action
  question = Question.find(:id)
  question.options.each do |op|
     op.blah += 1
  end

  respond_to do |format|
     if question.save()
         format.json { render json: {question: question.to_json(:include => :options)} }
     else
         blah blah
     end
  end
end

2 个答案:

答案 0 :(得分:1)

很奇怪,因为您编辑了相应的项目,然后保存(并验证它们已保存到db --since refresh)。所以渲染到json应该可以工作。

您可以随时执行明确的reload来电,例如

format.json { render json: {question: question.reload.to_json(:include => :options)} }

但如果这是原因,那将是非常奇怪的,因为你实际上只是保存了那些数据。

但是昨天我遇到了类似的问题,实际上发生了我replaceHtml div的{​​{1}},但我插入的数据没有相同的周围div。所以它第一次正确更新,第二次只显示旧数据(实际上它没有做任何事情,因为它没有找到要替换的div)。

所以简而言之:如果简单地刷新工作,imho它不是数据库而且它不是缓存,但很可能是你的javascript中的东西:更新屏幕出错了。

希望这有帮助。

答案 1 :(得分:0)

question.options.each do |op|
     op.blah += 1
     op.save
end

修改后您忘记保存选项。