我有一个单身的路线,如下所示:
resource :avatar, :only => [:edit, :update]
当用户编辑头像时,他们会转到/ avatar / edit查看表单,当他们保存时,他们会通过放置请求发送到/ avatar,然后重定向回/ avatar / edit。当我们向/ avatar获取GET请求时会发生什么?
目前无法识别路线并返回通用404。但这种情况发生的次数多于应有的情况,所以我觉得我们应该对此采取行动。我很想添加一个:
get "/avatar" => redirection("/avatar/edit")
有什么理由不这样做?这样做有什么危险吗?
我不确定我是否知道发生此错误的所有原因,但我知道一些:
有一个错误,所以不是重定向,用户只是在put路径中再次显示编辑表单,但是然后,用户不再重新提交,而是重新使用url(按下url中的输入字段,复制和粘贴,书签等)。
此时用户决定更改区域设置(通常是因为错误消息是该用户第一次真正需要了解网站,所以他们决定将语言切换为他们理解的语言)当然会在同一个网址中生成一个get。
我现在有一个简单的重定向在第二种情况下不是最好的,因为错误丢失了,但至少它比404更好。
答案 0 :(得分:0)
与此路线混淆的部分原因是它是复数而且指的是单身。你有没有机会只使用“头像”?如果我去了一条路线“/ avatars”,我会期待一个头像列表。如果它是单数,那么我希望“/ avatar”可以查看头像。我也认为这可能在像“/ avatar.jpg”这样会回复头像图像的路线中有用。但是,如果您的规范定义没有用于节目并始终编辑尝试:
get "/avatars" => "avatars#edit"
或单数
get "/avatar" => "avatars#edit"