zoukankan      html  css  js  c++  java
  • (GoRails) 使用ActiveStorage给user添加上传头像功能。

    对activestorage的简单使用:

    头像库:uifaces.co。 可以使用大量设置好的头像图片。

    1.安装avatar

      rails active_storage:install

    2.user model建立has_one_attached关联。

    3.view上面添加代码:可以查看,修改头像

    • 用variant方法设置图像格式,需要安装gem 'mini_magick', (需要brew install imagemagick)
    • 提供了gem 'gravatar_image_tag', 可以使用helper方法

    4.代码太多,使用一个helper方法。

    module ApplicationHelper
      #...上略...
      def user_avatar(user, size=40)
        if user.avatar.attached?
          user.avatar.variant(resize: "#{size}x#{size}!")
        else
          gravatar_image_url(user.email, size: size)
        end
      end
    end

    这样_navbar.html.erb中也可以使用这个方法了

    5.因为用到了device,所有在controller配置参数白名单:

    class ApplicationController < ActionController::Base
      protect_from_forgery with: :exception
    
      before_action :configure_permitted_parameters, if: :devise_controller?
      before_action :masquerade_user!
    
      protected
    
        def configure_permitted_parameters
          devise_parameter_sanitizer.permit(:sign_up, keys: [:name])
     +    devise_parameter_sanitizer.permit(:account_update, keys: [:name, :avatar])
        end
    end

    注意:⚠️

    Devise error: undefined method `current_sign_in_ip'

    首先看devise是否是最新版本gemfile,和gemfile.lock

    然后,检查migration中是否加上了这个属性current_sign_in_ip。如果没有的话

    • 第一个办法,user model中去掉devise_for :trackable
    • 第二个办法,加上这个属性,然后rails db:migrate
    rails g migration AddTrackingToUsers
    
    class AddTrackingToUsers
      def change
        add_column :users, :current_sign_in_ip, :string
        add_column :users, :last_sign_in_ip, :string
      end
    end
    
    rails db:migrate
  • 相关阅读:
    psy & vr
    psy 2
    psy
    linux c中select使用技巧
    hostent h_addr_list
    gethostbyname() -- 用域名或主机名获取IP地址
    c_select 调用参数说明
    [NYOJ 737] 石子合并(一)
    [HDU 1059] Dividing
    [HDU 1789] Doing Homework again
  • 原文地址:https://www.cnblogs.com/chentianwei/p/10081470.html
Copyright © 2011-2022 走看看