我正在使用 Devise gem 在 RoR 中构建小页面并卡住了。当我想通过用户模型中的嵌套属性保存配置文件时,出现错误,我无法克服它。
用户模型
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'
感谢您的建议帮助:)
编辑
那是愚蠢的错误......我的表单中有这部分代码:
<%= profile.select :gender, %w[Male Female], {}, { :index => nil }%>
我删除{ :index => nil }
了,现在问题消失了:)