我遇到的问题是表单方法是post而不是put / patch更改新的
form_for(resource, as: resource_name, url: password_path(resource_name), html: { method: :put }) do |f|
end
会生成以下HTML
<form accept-charset=\"UTF-8\" action=\"/users/password\" class=\"form-horizontal\" id=\"new_user\" method=\"post\" role=\"form\"><div style=\"display:none\"><input name=\"utf8\" type=\"hidden\" value=\"✓\" /><input name=\"authenticity_token\" type=\"hidden\" value=\"TOKEN" /></div></form>
对于我的用户路由,我使用了devise_for :users
,与密码相关的路由是
user_password POST /users/password(.:format) devise/passwords#create
new_user_password GET /users/password/new(.:format) devise/passwords#new
edit_user_password GET /users/password/edit(.:format) devise/passwords#edit
PATCH /users/password(.:format) devise/passwords#update
PUT /users/password(.:format) devise/passwords#update
当我点击重置密码时,它实际上指向了创建操作而不是更新操作。
有什么具体原因吗?