在Rails中未定义的方法`stringify_keys'

时间:2014-02-02 05:16:54

标签: ruby-on-rails

我在尝试编辑用户资源后收到此错误: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>

感谢任何帮助!

1 个答案:

答案 0 :(得分:2)

你有一个错误......

这一行

@user.update_attributes(params[:id])

应该发送用户对象

@user.update_attributes(params[:user]) # note sending agency as hash not the id

如果你使用的是Rails 4,你可能想要熟悉Strong Params。