2011-05-21 5 views
0

J'essaie d'ajouter un profil d'intégration dans un utilisateur et je continue d'obtenir cette erreur. Je suis sûr que c'est un problème simple à résoudre mais je n'ai aucune idée de comment le faire. Je suis très nouveau avec RoR donc les choses sont encore un peu confuses. Voici mon code.Mongoid créant un document incorporé à partir d'une vue

Modèles/Profil

class Profile 
    include Mongoid::Document 
    attr_accessible :handle, :description 

    field :handle 
    field :description 
    embedded_in :user 
end 

Contrôleurs/Profil

class ProfileController < ApplicationController 
    def create 
    @user = current_user 
    @profile = @user.profile.create!(params[:profile]) 
    redirect_to dashboard_path 
    end 
end 

vues/profil/new

<h1>Create Profile</h1> 

<%= form_for [:current_user, Profile.create] do |f| %> 
<div class="field"> 
    <%= f.label :handle %> 
    <%= f.text_field :handle %> 
</div> 
<div class="field"> 
    <%= f.label :description %> 
    <%= f.text_area:description %> 
</div> 

    <p class="button"><%= f.submit %></p> 
<% end %> 

Répondre

0

essayer

@user = current_user 
@profile = Profile.new(params[:profile]) 
@user.profile = @profile 
@user.save 
# or @profile.save 
+0

Je reçois le même message d'erreur. – MattAitchison

+0

Avez-vous un "embeds_one: profile" dans le modèle User? – sandrew

+0

Oui. Voulez-vous que je l'affiche? – MattAitchison

1

Vous ne pouvez pas utiliser Profile.create dans votre views.html.erb car Profile est intégré dans un utilisateur. Donc, vous devez faire quelque chose comme current_user.build_profile

<%= form_for [:current_user, current_user.build_profile] do |f| %> 

devrait travailler

Questions connexes