6

Ho letto molti post correlati ma non riesco a trovare il motivo per cui non funziona per me. Ho ancora un "impossibile assegnare in massa attributi protetti: profili" ... Cosa sto facendo male?Impossibile assegnare in massa attributi protetti: profili,

Ho un modello utente e un modello profilo correlato con una relazione uno-a-uno. Qui il modello utente (semplificato)

class User < ActiveRecord::Base 
    attr_accessible :email, :password, :password_confirmation, :profile_attributes, :profile_id 
    has_secure_password 

    has_one :profile 

    accepts_nested_attributes_for :profile 
end 

il modello profilo

class Profile < ActiveRecord::Base 
attr_accessible :bio, :dob, :firstname, :gender, :lastname, :user_id 

belongs_to :user 
end 

mio controller utente

def new 
@user = User.new 
    respond_to do |format| 
    format.html # new.html.erb 
    format.json { render json: @user } 
    end 
end 

def create 
@user = User.new(params[:user]) 
@user.build_profile 

respond_to do |format| 
    if @user.save 

    format.html { redirect_to @user, flash: {success: 'User was successfully created. Welcome !'} } 
    format.json { render json: @user, status: :created, location: @user } 
    else 
    format.html { render action: "new" } 
    format.json { render json: @user.errors, status: :unprocessable_entity } 
    end 
end 
end 

Se può essere di alcun aiuto, sia Utente e profilo erano impalcati.

Ho provato anche con ': profiles_attributes' invece di 'profile_attributes' nel attr_accessible utente, lo stesso problema ...

provato troppo, '@ user.profiles.build' invece di '@ user.build_profile' nel dispositivo di controllo utente ... stesso risultato ...

Qualsiasi aiuto con qualche spiegazione sarebbe grande (io sono un noob su binari così mi perdoni)

EDIT la forma semplice che uso

<%= simple_form_for(@user) do |f| %> 
<%= f.error_notification %> 


<%= f.simple_fields_for :profiles do |p| %> 
    <div class="nested-form-inputs"> 
     <%= p.input :lastname %> 
     <%= p.input :firstname %> 
    </div> 
<% end %> 


<div class="form-inputs"> 
    <%= f.input :email %> 
    <%= f.input :password %> 
    <%= f.input :password_confirmation %> 
</div> 

<div class="form-actions"> 
    <%= f.button :submit %> 
</div> 

<% end %> 

Acclamazioni

risposta

5

Il messaggio di errore che hai citato dice can't mass-assign protected attributes: profiles. Credo che avete bisogno di un attr_accessible :profiles (o forse :profile)

Ho un app con

accepts_nested_attributes_for :order_items 
attr_accessible :order_item 
+0

risolto, il problema era con la cache di classe rails, ho riavviato il server di rotaie e tutto funziona perfettamente. – ajet

3

Il problema era con la cache rotaie di classe, ho riavviato il server e tutto funziona alla perfezione ..,

Problemi correlati