我有2个为设计构建的自定义视图,1更改密码,其他更新其他自定义信息。密码更新工作正常,因此我复制了第二个视图的方法,但是当提交数据时出现错误
No route matches [PATCH] "/users/discovery_settings/update"
这是没有意义的,因为我的路线是
devise_for :users, controllers: {registrations: 'users/registrations'}
as :user do
end
get 'users/discovery_settings' => 'users#discovery_settings'
post 'users/discovery_settings/update' => 'users#update_discovery'
在我的控制器中,用户使用与密码更新相同的方法
def update_discovery
@user = User.find(current_user.id)
if @user.update(user_params)
# Sign in the user by passing validation in case their password changed
sign_in @user, :bypass => true
redirect_to root_path
else
render "edit"
end
end
然后我在我的form_for视图中调用它
<%= form_for(@user, :url => { :action => "update_discovery" }, html: {class: "form floating-label"}) do |f| %>
如何修复路由错误? 我迷失了为什么它正在寻找&#34;补丁&#34;当我已经指定&#34; post&#34;
答案 0 :(得分:0)
错误告诉你。你有一个POST路由,更新是要求PATCH路由。
尝试使用补丁而不是发布:
patch 'users/discovery_settings/update' => 'users#update_discovery'