2013-06-02 2 views
0

Я строю небольшую страницу в RoR с помощью Devise gem и застрял. Когда я хочу сохранить профиль по вложенным атрибутам из пользовательской модели, есть ошибка, и я не могу ее преодолеть.Сохранение вложенных атрибутов для профиля в пользовательской модели (Rails)

пользователя Модель

has_one :profile 
accepts_nested_attributes_for :profile 

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

belongs_to :user 

Изменить вид пользователь (здесь я хочу, чтобы добавить информацию о профиле)

<% resource.build_profile %> 

<%= form_for(resource, :as => resource_name, 
      :url => registration_path(resource_name), 
      :html => { :method => :put, :class => "custom" }) do |f| %> 

(some fields for user) 

    <%= f.fields_for :profile, :child_index => resource.id, 
        :html => {:class => "custom"} do |profile| %> 

     <%= profile.label :name %> 
     <%= profile.text_field :name %> 

     <%= profile.label :surname %> 
     <%= profile.text_field :surname %> 

    <% end %> 
    <%= f.submit "Update my profile!" %> 
<% end %> 

Ошибка в браузере

Internal server error 

Ошибка в терминале

!! Unexpected error while processing request: expected Array (got Rack::Utils::KeySpaceConstrainedParams) for param `profile_attributes' 

Спасибо за помощь в совет :)

EDIT

Это была глупая ошибка .. У меня был этот p искусство кода в моей форме:

   <%= profile.select :gender, %w[Male Female], {}, { :index => nil }%> 

Я удалил { :index => nil }, теперь проблемы нет :)

ответ

1

Может быть, вам не хватает в этом user.rb файле:

attr_accessible :profile_attributes 

Кроме того, если он не будет работать, попробуйте сделать

<% new_profile = resource.build_profile %> 
... 
<%= f.fields_for :profile, new_profile, ... 
+0

К сожалению, не удалось :(По-прежнему такая же ошибка ... –

Смежные вопросы