유용하고 유용한 솔루션을 구축하면 here이 표시되며 업데이트 콜백도 수정하려고합니다.(이전 개체 대신) javacript 콜백에서 업데이트 된 개체에 액세스하는 방법
문제는 데이터를 추출하려고 시도하는 특정 unit
은이 콜백이 성공적으로 update
동작에 의해 트리거되었지만 항상 캐시 된 이전 버전입니다.
// callback triggered by the update action
$('.best_in_place').bind("ajax:success", function() {
...
console.log(unit.duration);
// which is exactly the same as
console.log(<%= Unit.find(unit.id).unit_users.pluck(:duration).sum %>);
// and both print the OLD duration val instead of the updated val which is in the database
});
과 unit_users_controller 코드
...def update
@unit = @unituser.unit
respond_to do |format|
if @unituser.update(unit_user_params)
@unit.reload
logger.info('-----------------------------------------------------------------')
logger.info('@unit.duration in the controller is ' + @unit.duration.to_s) # which is the correct value
logger.info('-----------------------------------------------------------------')
gon.unit_duration = @unit.duration # an experiment which didn't work for me
format.json {respond_with_bip(@unituser) }
else
# format.html { render :action => 'edit' }
format.json { respond_with_bip(@unituser) }
end
end
end
나는 unit.reload
의 여러 버전을 시도했습니다, 아무것도 할 수 없습니다. 어쩌면 내가 잘못된 장소에 넣었을거야?
컨트롤러 코드를 게시 할 수 있습니까? –
@RodrigoZurek 컨트롤러 코드와 관련이 없습니다. 컨트롤러는 이것과 아무런 관련이 없습니다. 이것은'.js.erb' 파일이 어떻게 작동하는지 오해 한 것입니다. – meagar
컨트롤러와 관련이 있습니다. 컨트롤러를 통과해야하는 업데이트 된 개체를 원한다면 어떻게 든 다시 가져와야합니다. –