加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 在浏览器中渲染模板并更改url字符串?

发布时间:2020-12-17 04:39:23 所属栏目:百科 来源:网络整理
导读:我有2个动作 – 编辑和更新. “编辑”中的表单将值提交给“更新”操作.当保存模型失败时,我渲染编辑teplate,用户看到错误,并且字段预先填充了之前填充的内容.有一个巨大但对我来说 – 在用户浏览器中的URL面板中有/ user / update,即使(因为)我渲染了编辑模
我有2个动作 – 编辑和更新. “编辑”中的表单将值提交给“更新”操作.当保存模型失败时,我渲染编辑teplate,用户看到错误,并且字段预先填充了之前填充的内容.有一个巨大但对我来说 – 在用户浏览器中的URL面板中有/ user / update,即使(因为)我渲染了编辑模板.我可以通过在更新操作中将一些参数传递给render方法来改变它吗?我不希望用户看到除了编辑之外还有任何(更新)操作.可能吗?

解决方法

有两种方法:

1)从更新操作重定向回编辑操作,而不是仅渲染模板,并传递要用于填充正在编辑的对象的错误消息和属性.这将导致URL为/ user / edit.

def update
  @user = User.find(params[:id])
  if @user.update_attributes params[:user]
    ...
  else
    redirect_to edit_user_path(@user,:messages => @user.errors)
  end
end

2)发布到编辑操作而不是更新操作,并完全删除更新操作.你可以使用request.post吗?在您的编辑操作中检查请求是发布请求还是获取请求,然后使用相同的函数定义执行更新和编辑操作.

def edit
  @user = User.find(params[:id])
  if request.post?
    @user.update_attributes params[:user]
    ...
  else
    ...
  end
end

注意:请记住,您无法真正隐藏客户端的POST操作,因为他们始终可以查看您的源代码并查看您在表单中发布的操作.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读