Rails возвращает устаревшую информацию после выполнения save () - PullRequest
0 голосов
/ 23 ноября 2011

У меня есть модель Вопрос, который имеет_мани Опции.

В действии я изменяю параметры объекта вопроса, а затем возвращаю объект вопроса в виде 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 ]

1 голос
/ 23 ноября 2011

Странно, потому что вы редактируете элементы на месте, затем сохраняете (и проверяете, что они сохранены в db - так как обновление работает).Таким образом, рендеринг в json должен работать.

Вы всегда можете сделать явные reload вызовы, например

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

Но было бы очень странно, если бы это было причиной, так как вы на самом делетолько что сохранил эти данные.

Но вчера у меня была похожая проблема, и на самом деле случилось то, что я сделал replaceHtml из div, но мои вставленные данные не имели того же окружения div.Так что в первый раз он обновился правильно, а во второй раз он просто показал старые данные (хотя на самом деле он ничего не сделал, потому что не нашел div для замены).

Короче говоря: если просто обновитьработает, imho, это не база данных и она не кэшируется, но, скорее всего, будет что-то в вашем javascript: обновление экрана, которое идет не так.

Надеюсь, это поможет.

0 голосов
/ 23 ноября 2011
question.options.each do |op|
     op.blah += 1
     op.save
end

Вы забыли сохранить параметры после изменения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...