【问题标题】:Avatar image active storage Rails 6头像图像主动存储 Rails 6
【发布时间】:2021-04-16 19:59:35
【问题描述】:

我正在尝试设置活动存储以在新用户注册时上传头像。 我跑了:

rails active_storage:安装 rails db:迁移

这是一个没有设计的简单应用程序。

我已将“has_one_attached”放入模型/user.rb

class User < ApplicationRecord
    before_save { self.username = username.downcase }
    has_one_attached :avatar
end

我在用户控制器的强参数中加入了“:avatar”:

class UsersController < ApplicationController

def new
    @user = User.new
end

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

def update
    @user = User.find(params[:id])
    @user.avatar.attach(params[:avatar])
    if @user.update(user_params)
      flash[:notice] = "Your account information was succesfully updated"
      redirect_to user_path
    else
      render 'edit'
    end
end

def create
    @user = User.new(user_params)
    @user.avatar.attach(params[:avatar])
    if @user.save
        flash[:notice] = "Welcome to Edx Wallet"
        redirect_to user_path(@user)
    else
        render 'new'
    end
end

private
def user_params
    params.require(:user).permit(:username, :avatar)
end

最后,我将以下代码放在导航视图中,以在没有用户登录的情况下使用通用头像

<%= image_tag user_avatar(current_user, 40), class: "lg:ml-4 mt-1 lg:mb-0 mb-1 ml-5 pointer-cursor hover:bg-gray-50"%>

在我的 application_helper 中:

 def user_avatar(user, size=40)
    if user.avatar.attached?
      user.avatar.variant(resize: "#{size}x#{size}!")
    else
      'https://randomuser.me/api/portraits/women/49.jpg'
    end
  end

但是当试图显示我得到一个错误时:

显示 /home/edxco/Documents/Microverse/financial_app/app/views/layouts/_nav.html.erb 提出第 48 行的位置:

nil:NilClass 的未定义方法 `avatar'

>   def user_avatar(user, size=40)
>     if user.avatar.attached?
>       user.avatar.variant(resize: "#{size}x#{size}!")
>     else
>       'https://randomuser.me/api/portraits/women/49.jpg'
>     end
>   end

我做错了什么?你能帮帮我吗?

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-6 rails-activestorage


    【解决方案1】:

    您的用户未定义。在您的辅助方法中,尝试使用您在控制器中设置的实例变量 @user 而不是 user

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-04
      • 1970-01-01
      • 2015-06-27
      • 2023-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多