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
risolto, il problema era con la cache di classe rails, ho riavviato il server di rotaie e tutto funziona perfettamente. – ajet