当前,我正在尝试在个人资料上附加一个:avatar
字段。我收到以下错误:
但是,在文档之后,我将: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">
我能够上载另一型号的附件,所以安装时没有问题。为什么我会收到此错误的任何想法?