何らかの理由で、フォームを送信してユーザープロファイルレコードを更新すると、ユーザープロファイルレコードに何らかの理由で他のすべての列がnilに更新されます。rails 5強力なパラメータを更新するレコードを他の列に設定しない
User.last.user_profileには属性「linkedin_url」があり、「www.yahoo.com」に設定されているとします。フォームを送信すると、User:電話番号、UserProfile:work_address、:work_zipcodeが更新されますが、 "linkedin_url"はnilに設定されます。なぜIDK!もし上記の方法で
class UserProfilesController < ApplicationController
def update
@user = User.last
if @user.update(user_profile_params)
respond_to do |format|
format.html {
redirect_to user_profile_path(@user)
}
format.json {
render :show, status: :ok, location: @preference
}
end
end
end
def user_profile_params
params.require(:user).permit(:phone_number, user_profile_attributes: [:work_address, :work_zipcode])
end
フォーム
= form_for @user, url: user_profile_path(@user), method: :put do |f|
= f.fields_for :user_profile do |ff|
= ff.label :work_address
%br
= ff.text_field :work_address
%br
= ff.label :work_zipcode
%br
= ff.text_field :work_zipcode
%br
= f.label :phone_number
%br
= f.text_field :phone_number
%br
= f.submit "Submit", class: "btn"
受け入れた属性、params.require(:user).permit(:phone_number、user_profile_attributes:[:work_address、:work_zipcode、:linkedin_url])にlinkedin_urlを追加するだけです。 –