2016-09-23 1 views
0

Pour une raison quelconque, lorsque je soumets mon formulaire et met à jour mon enregistrement de profil utilisateur, mes enregistrements de profil utilisateur ont toutes les autres colonnes mises à jour pour aucune raison.rails 5 paramètres forts mettant à jour les ensembles d'enregistrements autres colonnes à

Supposons que User.last.user_profile a un attribut "linkedin_url" et qu'il est paramétré sur "www.yahoo.com". Une fois que je soumets le formulaire, l'utilisateur: numéro de téléphone, et UserProfile: adresse_de_travail,: code_travail est mis à jour, mais le "linkedin_url" est réglé à zéro. IDK pourquoi!

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 

forme

= 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" 
+0

Il suffit d'ajouter le linkedin_url aux attributs acceptés, params.require (: user) .permit (: numéro_philaire, user_profile_attributes: [: adresse_travail,: code_travail,: linkedin_url]) –

Répondre

0
def user_profile_params 
    params.require(:user).permit(
    :phone_number, 
    user_profile_attributes: [:work_address, :work_zipcode] # ⇐ HERE 
) 
end 

Dans la méthode ci-dessus, vous devez énumérer explicitement :linkedin_url:

def user_profile_params 
    params.require(:user).permit(
    :phone_number, 
    user_profile_attributes: [:work_address, :work_zipcode, :linkedin_url] 
) 
end 
0

Juste résolu mon problème, c'était parce que je ne l'ai pas whitelist: id dans les paramètres forts.