ActiveModel :: UnknownAttributeError未知属性'avatar'-ActiveStorage

时间:2018-09-23 18:46:08

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

当前,我正在尝试在个人资料上附加一个:avatar字段。我收到以下错误: enter image description here

但是,在文档之后,我将:avatar的关系添加到了Profile。

models/profile.rb
class Profile < ApplicationRecord
  belongs_to :user
  has_one_attached :avatar
end

我还在强参数中添加了:avatar。在配置文件控制器中。

class ProfilesController < ApplicationController
  def create
    @profile = current_user.create_profile(profile_params)
  end
  ##
  private

  def profile_params
     params.require(:profile).permit(:full_name, :city, :bio, :avatar)
  end
end

我想知道问题是否出在用户和个人资料之间。一个用户有一个配置文件,该配置文件属于该用户。

class User < ApplicationRecord
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :validatable
  has_many :photos
  has_one :profile
end

我要求profiles/new.html.erb作为文件附件:

<%= form_for @profile do |f| %>
  <div class="form-group">
    <%= f.label :avatar %>
    <%= f.file_field :avatar, as: :file, class: "form-control" %>
  </div>

我看到在文件中存在化身的参数,这就是为什么我觉得如此混乱以至于它无法将:avatar识别为属性。

Started POST "/profiles" for 127.0.0.1 at 2018-09-22 17:55:26 -0400
Processing by ProfilesController#create as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"CXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX==", "profile"=>{"avatar"=>#<ActionDispatch::Http::UploadedFile:0x007ff62db322b8 @tempfile=#<Tempfile:/var/folders/86/g7_xcx392qn815kmkcm55ydc0000gn/T/RackMultipart20180922-10194-awlxd1.png>, @original_filename="profile.png", @content_type="image/png", @headers="Content-Disposition: form-data; name=\"profile[avatar]\"; filename=\"profile.png\"\r\nContent-Type: image/png\r\n">

我能够上载另一型号的附件,所以安装时没有问题。为什么我会收到此错误的任何想法?

0 个答案:

没有答案