【问题标题】:Images are not updating in the browser after they are changed in the database图像在数据库中更改后未在浏览器中更新
【发布时间】:2017-07-24 17:55:00
【问题描述】:

用户有一张照片。当他们更新他们的照片时,它会在数据库中成功更新,但不会在浏览器中更新。如果我打开其他浏览器,我可以看到它已更新。但是这个问题在所有浏览器中都会发生。有什么方法可以强制 Rails 在更新后显示新图像?

我在更新 user_params 的控制器中使用标准代码。

从 Heroku 控制台


启动 PATCH "/community/8" 由 UsersController#update 处理为 HTML
参数:{"utf8"=>"✓", "authenticity_token"=>"7zUIz7zxmYm8dssdSEGDHbddsieyVnwix8z/Fx/sxVzXqoLtxNq+3sxfps8RsE6pV/XN5V46qhJdo1VpKLK8pF3wDmZNg==", "user"=>{"profile"=>"Cool dude. ", "照片"=>#, @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]]

如果我更新其他字符串的用户属性,它们将立即显示。只有照片需要重新启动浏览器才能显示更改。

【问题讨论】:

  • 你能展示你为rails服务器和客户端截取的代码吗
  • @user3775217 请查看已编辑的问题

标签: ruby-on-rails ruby-on-rails-4


【解决方案1】:

要查看更新后的新图像,您需要使用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

【讨论】:

    【解决方案2】:

    问题是我在 Carrierwave 中创建了一个方法,将上传图像的文件名更改为 user.id 的等价物,这就是您在上面看到 [["photo", "8.jpg"] 的原因。因此,新图像被赋予相同的名称。删除此方法后,问题停止了。

    我仍然想知道是否有办法强制 Rails 意识到图像已更改,即使名称相同,然后重新加载它?

    【讨论】:

      猜你喜欢
      • 2022-12-06
      • 1970-01-01
      • 2014-01-22
      • 1970-01-01
      • 1970-01-01
      • 2015-03-19
      • 1970-01-01
      • 2021-03-31
      • 2012-03-29
      相关资源
      最近更新 更多