В настоящее время я пытаюсь прикрепить поле :avatar
к Профилю.Я получаю следующую ошибку:
Однако, следуя документам, я добавил отношение :avatar
к профилю.
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">
Мне удалось загрузить вложение для другой модели, поэтому при установке это не так.Есть идеи, почему я получаю эту ошибку?