2016-09-23 3 views
0

Aus irgendeinem Grund, wenn ich mein Formular absende und meine Benutzerprofil Datensatz aktualisieren, haben meine Benutzerprofil Datensätze alle anderen Spalten auf Null aus irgendeinem Grund aktualisiert.Rails 5 starke Parameter aktualisieren Datensätze andere Spalten zu Null

Nehmen wir an, User.last.user_profile hat ein Attribut "linkedin_url" und es ist auf "www.yahoo.com" eingestellt. Sobald ich das Formular abschicke, wird der Benutzer: Telefonnummer und UserProfile: Work_Adresse,: Work_Zipcode wird aktualisiert, aber die "linkedin_url" wird auf Null gesetzt. Ich weiß nicht warum!

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

= 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

fügen Sie einfach die linkedin_url zu den akzeptierten Attributen hinzu, params.require (: user) .permit (: phone_number, user_profile_attributes: [: work_address,: work_zipcode,: linkedin_url]) –

Antwort

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

Bei dem Verfahren oben explizit :linkedin_url Liste soll:

mein eigenes Problem gelöst
def user_profile_params 
    params.require(:user).permit(
    :phone_number, 
    user_profile_attributes: [:work_address, :work_zipcode, :linkedin_url] 
) 
end 
0

Just, es war, weil ich nicht tat weiße Liste: ID in den starken Parametern.

Verwandte Themen