Mongoid создает встроенный документ из представления - PullRequest
0 голосов
/ 21 мая 2011

Я пытаюсь добавить профиль в пользователя и получаю эту ошибку.

   Access to the collection for Profile is not allowed since it is an embedded document, please access a collection from the root document.

Я уверен, что это простая проблема, но я понятия не имею, как это сделать. Я очень новичок в RoR, поэтому все еще немного сбивает с толку. Вот мой код.

Модель / Профиль

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

  field :handle
  field :description
  embedded_in :user
end

Контроллеры / Профиль

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

Views / профиль / новый

<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 %>

Ответы [ 2 ]

1 голос
/ 28 июля 2011

Вы не можете использовать Profile.create в вашем views.html.erb, потому что Profile встроен в пользователя.Так что вам нужно сделать что-то вроде current_user.build_profile

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

должно работать

0 голосов
/ 21 мая 2011

попробуй

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