我在尝试编辑用户资源后收到此错误:undefined method 'stringify_keys' for "3":String
。似乎错误是@user.update_attributes
,但我不明白为什么params[:id]
无效。
这表示问题代码是
def update
@user = User.find(params[:id])
if @user.update_attributes(params[:id])
flash[:success] = "Profile updated"
redirect_to @user
else
render 'edit'
end
end
这是我的更新表格
<h1>Update your profile</h1>
<div class="row">
<div class="span6 offset3">
<%= form_for(@user) do |f| %>
<%if @user.errors.any? %>
<div class="error_messages">
<h2>Form is invalid</h2>
<ul>
<% for message in @user.errors.full_messages %>
<li><%= message %></li>
<% end %>
</ul>
<% end %>
<%= f.label :username %>
<%= f.text_field :username %>
<%= f.label :email %>
<%= f.text_field :email %>
<%= f.label :password %>
<%= f.password_field :password %>
<%= f.label :password_confirmation, "Confirm Password" %>
<%= f.password_field :password_confirmation %>
<%= f.submit "Save changes", class: "btn btn-large btn-primary" %>
<% end %>
</div>
</div>
感谢任何帮助!
答案 0 :(得分:2)
你有一个错误......
这一行
@user.update_attributes(params[:id])
应该发送用户对象
@user.update_attributes(params[:user]) # note sending agency as hash not the id
如果你使用的是Rails 4,你可能想要熟悉Strong Params。