我有一种形式的用户属性,大约有60个字段,通过在一个页面上切换隐藏的div来单独显示。更新其他人的个人资料时,所有字段都会按预期更新。更新当前登录的配置文件(current_user)时,只有大约40个字段更新。这是我在current_user配置文件的更新方法上观察到的内容:
在@user = User.find(params [:id])之后直接设置断点并查看已通过的参数时,60个表单字段参数中只有大约40个存在。存在的那些按预期更新,显然那些不存在的那些不会更新。
有什么可能导致这种奇怪行为的线索?
示例:用户/ _form.erb上的许多错误行为表单字段之一
<%= f.text_field :street_address, :placeholder => 'address..' %>
users_controller.rb中的更新方法
# UPDATE
def update
@user = User.find(params[:id])
breakpoint_set = on_this_line
respond_to do |format|
if @user.update_attributes params[:user]
format.html do
redirect_to("/users", :notice => 'User Profile was successfully updated.')
format.xml { head :ok }
end
else
format.html { render :action => "edit" }
format.xml { render :xml => @user.errors, :status => :unprocessable_entity }
end
end
end
答案 0 :(得分:2)
如果&#34;当前登录用户&#34;只是一个User
对象,然后我怀疑你看到了缓存的副作用。
如果您有两个表示相同记录的Active Record对象,并且他们不同意该记录的状态应该是什么,则可能发生不同类型的问题。例如;
@u1 = User.find logged_in_user_id
@u2 = User.find logged_in_user_id
@u1.update_attributes :username => "root"
@u2.username # old username
@u2.reload
@u2.username # "root"
确保不会发生这种情况。
答案 1 :(得分:1)
检查参数是否从客户端移植到控制器。您可以检查这将是Firefox + Firebug控制台。
并检查每个参数是否都在用户哈希下,因为缺少的参数可能不会出现在同一个用户哈希中(Rails控制器正在查看)。