2017-03-04 76 views
0

用戶有照片。當他們更新照片時,它在數據庫中成功更新,但不會在瀏覽器中更新。如果我打開其他瀏覽器,則可以看到它已更新。但是這個問題正在所有瀏覽器中發生。有什麼方法可以讓Rails在更新後顯示新圖像?圖像在數據庫中更改後未在瀏覽器中更新

我在更新user_params的控制器中使用標準代碼。

從Heroku的控制檯

發起者PATCH 「/小區/ 8」 爲
處理由UsersController#更新爲HTML
參數:{ 「UTF8」=> 「✓」, 「authenticity_token」=> 「7zUIz7zxmYm8dssdSEGDHbddsieyVnwix8z/Fx/sxVzXqoLtxNq + 3sxfps8RsE6pV/XN5V46qhJdo1VpKLK8pF3wDmZNg ==」,「user」=> {「profile」=>「Cool dude,live in ocean。」,「photo」=>#,@ original_filename =「som-tam- thai.jpg「,@ content_type =」image/jpeg「,@ headers =」Content-Disposition:form-data; name = \「user [photo] \」; filename = \「som-tam-thai.jpg \」 \ r \ nContent-Type:image/jpeg \ r \ n「>,」gender_type「=>」male「,」country「=>」US「},」id「=>」8「}
[1m [35mSQL(1.5ms)[0m UPDATE「users」SET「photo」= $ 1,「updated_at」= $ 2 WHERE「users」。「id」= $ 3 [[「photo」,「8.jpg」]] ,[「updated_at」,「2017-03-04 18:34:20.835477」],[「id」,8]]

如果我更新字符串的其他用戶屬性,它們將立即顯示。只有照片需要重新啓動瀏覽器才能顯示更改。

+0

你可以顯示你的代碼剪的rails服務器和客戶端 – user3775217

+0

@ user3775217請參閱編輯的問題 –

回答

0

的問題是,我已經建立了一個Carrierwave方法,改變上傳的圖片的文件名user.id相當於這就是爲什麼你上面看到[「照片」,「8.JPG」 ]。所以新圖像被賦予相同的名稱。刪除此方法後,問題已停止。

我仍然想知道是否有辦法強制Rails意識到圖像已經改變,即使名稱相同,並重新加載它?

0

要查看新的更新圖像,您需要使用redirect_to方法。它應該重定向到具有這個特定ID的用戶的配置文件。

def edit 
    @user = User.find(params[:id]) 
end 

def update 
    @user = User.find(params[:id]) 

    if @user.update(user_params) 
    redirect_to @user 
    else 
    render 'edit' 
    end 
end 
相關問題