ActiveStorage를 사용하여 파일을 업로드할 때 "undefined method upload"for nil: NilClass"오류가 발생합니다.

3985 단어 RailsActiveStorage

문제점


ActiveStorage를 사용하여 파일을 업로드할 때 "undefined method upload"for nil: NilClass"오류가 발생합니다.

재현 순서

  • Rails5.0 릴리즈에서 5.2
  • 로 어플리케이션 업그레이드

  • 실행rails active_storage:installrails db:migrate ActiveStorage 설치
  • Mode, Controller, View에 파일 업로드에 필요한 설정 추가
  • 브라우저에서 파일 업로드 작업을 수행할 때 문제점에 기재된 오류
  • 까닭

  • ActiveStorage를 활용하는 데 필요한 설정 부족
  • 해결책


    environments/*.rb에 엔딩 추가


    config/environments/development.rb
    # Store uploaded files on the local file system (see config/storage.yml for options)
    config.active_storage.service = :local
    
    config/environments/test.rb
    # Store uploaded files on the local file system (see config/storage.yml for options)
    config.active_storage.service = :test
    
    config/environments/production.rb
    # Store uploaded files on the local file system (see config/storage.yml for options)
    config.active_storage.service = :local
    

    storage.yml 추가


    config/storage.yml
    test:
      service: Disk
      root: <%= Rails.root.join("tmp/storage") %>
    
    local:
      service: Disk
      root: <%= Rails.root.join("storage") %>
    
    # Use rails credentials:edit to set the AWS secrets (as aws:access_key_id|secret_access_key)
    # amazon:
    #   service: S3
    #   access_key_id: <%= Rails.application.credentials.dig(:aws, :access_key_id) %>
    #   secret_access_key: <%= Rails.application.credentials.dig(:aws, :secret_access_key) %>
    #   region: us-east-1
    #   bucket: your_own_bucket
    
    # Remember not to checkin your GCS keyfile to a repository
    # google:
    #   service: GCS
    #   project: your_project
    #   credentials: <%= Rails.root.join("path/to/gcs.keyfile") %>
    #   bucket: your_own_bucket
    
    # Use rails credentials:edit to set the Azure Storage secret (as azure_storage:storage_access_key)
    # microsoft:
    #   service: AzureStorage
    #   storage_account_name: your_account_name
    #   storage_access_key: <%= Rails.application.credentials.dig(:azure_storage, :storage_access_key) %>
    #   container: your_container_name
    
    # mirror:
    #   service: Mirror
    #   primary: local
    #   mirrors: [ amazon, google, microsoft ]
    

    보태다


    추가 설정 및 제작에 대한yaml,Rails5.2 새 프로그램의 기본 설정 파일 참조

    좋은 웹페이지 즐겨찾기