ruby on rails -在同一页面上编辑同一模型的多个表单



我有一个用户模型,有三个不同类型的字段,我希望能够相互独立地更新

同一页面有3种不同的表单作用于同一模型:

  • 修改用户头像

  • 更改用户名/email

  • 修改用户密码

分开的原因:照片被选中后会自动上传(不需要密码),更改姓名/电子邮件无需输入密码,但需要提交表格;

密码需要当前密码修改。

当前在user# update中,我有一系列的if/else分支用于逻辑:if params[:commit] == "Update Password"我更新密码,elsif params[:commit] == "Update Info"我更新他们的名字/电子邮件,等等。

我不喜欢多长时间的逻辑得到,我不认为它的良好做法,将控制器逻辑绑定到视图(因为逻辑是基于params[:commit]文本,出现在提交按钮)。

有更好的方法吗?

去掉if.. else ..Elsif链,你可以把你的更新动作分成update_password, update_info等,并相应地设置你的表单动作。当然你也需要更新你的路由

在你的控制器中,你可以检查一下哪些参数已经发送,然后采取适当的行动吗?

if params[:password] && params[:password_confirmation]
  @user.password = params[:password]
end
if params[:email]
  @user.email = params[:email]
end
if @user.save
  etc...

那么你就有了一条路由,它的行为取决于所发送的内容。

相关内容

  • 没有找到相关文章

最新更新