【发布时间】:2011-09-22 21:14:05
【问题描述】:
我想这个问题可能以前被问过,但老实说我不知道如何搜索它。
基本上,当我在控制器的更新操作中执行渲染 :action => 'edit' 时,视图会以某种方式输出表单,就好像它是一个 :action => 'new' 页面。
form_for 给出了错误的操作,而 f.submit 给出了错误的按钮文本(它给出了创建而不是更新)
编辑:
控制器的相关部分
def edit
@user = User.find_by_email(current_user.email)
end
def update
old_password=params[:user].delete(:old_password)
@user=User.new(params[:user])
if User.find_by_email(@user.email).valid_password?(old_password)
logger.info 'Valid old password'
else
flash[:notice]='Invalid current password'
render :action=>'edit'
end
end
【问题讨论】:
-
我们需要一些代码来诊断:)
-
感谢回复,其实我刚刚解决了,但是还是没有意义...
-
我知道我有 @user=User.new(params[:user]),但它不应该在渲染后被覆盖:action=>'edit'?
-
我认为,form_for 不在乎你在渲染什么。它检查@user 的
saved标志并根据其值构建表单。 -
我对此有疑问,因为@user = User.find_by_email(current_user.email) 在渲染后执行:action => 'edit',不应该将标志设置为“已经之前保存过”?
标签: ruby-on-rails view form-for