ActionController::RoutingError(没有路由匹配 [PATCH]“/users/1/edit”):
ActionController::RoutingError (No route matches [PATCH] "/users/1/edit"):
我是 Rails 上 Ruby 的新手,我试图在这里找到我的问题的答案,但我没有找到任何可以帮助我的东西。我尝试在我的路由文件中添加一个补丁,但我认为我做的不正确。
routes.rb
get 'website_sign_up' => 'users#new'
post '/users' => 'users#create'
get "users/:id/edit" => "users#edit", :as => :user
patch "users/update" => "users#update", :as => "users/update"
user_controller.rb
class UsersController < ApplicationController
def new
@user = User.new
end
def create
@user = User.new(user_params)
if @user.save
session[:user_id] = user.id
redirect_to '/signup_success'
else
render 'new'
end
end
def edit
@user = User.find(params[:id])
end
def update
@user = User.find(params[:id])
if @user.update_attributes(user_params)
flash[:success] = "Profile updated"
redirect_to @user
else
render 'edit'
end
end
private
def user_params
params.require(:user).permit(:name, :email, :password, :password_confirmation, :phone)
end
end
如果有人能指出正确的方向,我将不胜感激。
我希望在您的 patch/put 路由中看到一个 :id
参数。也许这就是问题所在。如果您正在为表单使用表单助手,我怀疑就是这样。
无论如何,我强烈强烈建议您遵循Rails约定并使用resources
指令来指定您的RESTful路由。
config/routes.rb
resources :users
将此行添加到您的路由文件,然后从命令行 运行 rake routes
查看它为您生成的路由。
您可以在 Rails Guides 中阅读有关 RESTful 资源路由的更多信息。默认情况下,该指令将创建以下路由:
GET /users users#index
GET /users/new users#new
POST /users users#create
GET /users/:id users#show
GET /users/:id/edit users#edit
PATCH/PUT /users/:id users#update
DELETE /users/:id users#destroy
我会以此为起点。
如果需要,您可以限制它生成的路由:
resources :users, only: [:new, :create, :edit, :update]
希望对您有所帮助。
我是 Rails 上 Ruby 的新手,我试图在这里找到我的问题的答案,但我没有找到任何可以帮助我的东西。我尝试在我的路由文件中添加一个补丁,但我认为我做的不正确。
routes.rb
get 'website_sign_up' => 'users#new'
post '/users' => 'users#create'
get "users/:id/edit" => "users#edit", :as => :user
patch "users/update" => "users#update", :as => "users/update"
user_controller.rb
class UsersController < ApplicationController
def new
@user = User.new
end
def create
@user = User.new(user_params)
if @user.save
session[:user_id] = user.id
redirect_to '/signup_success'
else
render 'new'
end
end
def edit
@user = User.find(params[:id])
end
def update
@user = User.find(params[:id])
if @user.update_attributes(user_params)
flash[:success] = "Profile updated"
redirect_to @user
else
render 'edit'
end
end
private
def user_params
params.require(:user).permit(:name, :email, :password, :password_confirmation, :phone)
end
end
如果有人能指出正确的方向,我将不胜感激。
我希望在您的 patch/put 路由中看到一个 :id
参数。也许这就是问题所在。如果您正在为表单使用表单助手,我怀疑就是这样。
无论如何,我强烈强烈建议您遵循Rails约定并使用resources
指令来指定您的RESTful路由。
config/routes.rb
resources :users
将此行添加到您的路由文件,然后从命令行 运行 rake routes
查看它为您生成的路由。
您可以在 Rails Guides 中阅读有关 RESTful 资源路由的更多信息。默认情况下,该指令将创建以下路由:
GET /users users#index
GET /users/new users#new
POST /users users#create
GET /users/:id users#show
GET /users/:id/edit users#edit
PATCH/PUT /users/:id users#update
DELETE /users/:id users#destroy
我会以此为起点。
如果需要,您可以限制它生成的路由:
resources :users, only: [:new, :create, :edit, :update]
希望对您有所帮助。