我正在制作一个使用Mongoid和设计的Rails应用程序。目前,该功能非常基本,但它不像我期望的那样工作。特别是,更新根本不起作用。
我可以创建一个用户,但是当我回去更新它时,它不会引发任何错误,但也不会保存。某些代码可能会更清楚。我在路线上有这个:
devise_for :users
resources :users
这在控制器中:
## WORKS PERFECTLY FOR SIGNING USERS UP, AND FLASHES CORRECTLY
def new
@user = User.new
end
def create
@user = User.new(params[:user])
if @user.save!
flash[:success] = "Welcome!"
sign_in @user
redirect_to @user
else
render 'new'
end
end
## DOES NOT UPDATE THE USER RECORD, AND DOES NOT FLASH SUCCESS
## IT DOES, HOWEVER, REDIRECT TO SHOW, INSTEAD OF RENDERING EDIT
def edit
@user = User.find(params[:id])
end
def update
@user = User.find(params[:id])
if @user.save!
flash[:success] = "Profile edited successfully!"
redirect_to @user
else
render 'edit'
end
end
所以是的。正如代码所示,通过我的视图来编辑现有用户不会编辑该用户,也不会让闪存说明用户已被编辑,但它正确地重定向。我目前没有用户验证(虽然设计可能有一些) - 但更改所有与设计相关的字段并没有解决问题,所以我不认为这是一个静默验证失败。
表单是基本的
<%= form_for @user do |f| %>
<%= f.label: name %>
<%= f.text_field :name %>
...
<%= f.submit %>
<% end %>
排序。
不确定其他代码在这里有什么用处。请告诉我。我很难过。谢谢!
答案 0 :(得分:1)
你必须传递params,你可以使用update_attributes
或update_attributes!
@user = User.find(params[:id])
if @user.update_attributes!(params[:user])
...