carrierwave默认图像更新没有文件选择&上载

时间:2016-11-26 14:02:08

标签: ruby-on-rails ruby carrierwave cloudinary

许多用户提出了同样的问题,但我已经堆积了......

Rails:4.2.5

Carrierwave

Cloudinary

我想在创建用户时默认上传头像图片。

#include <stdio.h>
#include <math.h>
#include <omp.h>
#include <unistd.h>


int main ()
{

    printf("===MATRIX SUM===\n");
    printf("N ROWS: ");
    int i1; scanf("%d",&i1);
    printf("M COLUMNS: ");
    int j1; scanf("%d",&j1);
    int matrixA[i1][j1];

    int i, j;

    for(i = 0; i < i1; i++){
        for (j = 0; j < j1; j++){
            scanf("%d",&matriuA[i][j]);
        }
    }

    printf("\nMATRIX A: \n");
    for (i = 0; i < i1; i++){
        for (j = 0; j < j1; j++){
            printf("%d ", matrixA[i][j]);
        }
        printf("\n");
    }
    int sum = 0;
    #pragma omp parallel for private(i, j)
        for (i = 0; i < i1; i++)
            for (j = 0; j < j1; j++){
                sum += matrixA[i][j];
           }


    printf("\nTHE RESULT IS: %d", sum);

    return 0;
}

用户创建过程完成后,处理“after_action”。

“default_url”返回一个位于'public / fallbak /'的随机图像路径。

我把url放在user.avatar中,用户头像已经更新为NULL。 Cloudinary上没有上传任何图片。

基本上,我想在Cloudinary服务中存储图像。

当用户在屏幕上编辑用户信息时,他们可以上传头像图像。

但是我不能通过上面的逻辑将图像上传为默认头像。

我重写了Carrierwave的文档,但它对我不起作用。

我相信我的代码中缺少某些内容。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

由于ImageUploader.default_url正在返回相对路径,因此无法上传文件。

您有两种选择:

将主机参数添加到asset_path:

# app/uploaders/image_uploader.rb
def self.default_url()
  ActionController::Base.helpers.asset_path("fallback/" + "avatar_#{rand(1..15).to_s}.jpg", host: 'http://example.com')
end

或者使用File.open从文件系统附加文件:

def set_default_avatar!
  path = File.join(Rails.root, 'app/assets/images/fallbak', "avatar_#{rand(1..15).to_s}.jpg")
  File.open(path) do |f|
    @user.avatar = f
  end
end