【问题标题】:ActionController::RoutingError (No route matches [PATCH] "/users/1/edit"):ActionController::RoutingError (没有路由匹配 [PATCH] "/users/1/edit"):
【发布时间】:2015-09-19 07:37:28
【问题描述】:

我是 Ruby on Rails 的新手,并尝试在此处找到我的问题的答案,但我没有找到任何可以帮助我的东西。我尝试向我的路由文件添加补丁,但我认为我做得不对。

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

如果有人能指出我正确的方向,我将不胜感激。

【问题讨论】:

  • 什么不工作以及期望的行为是什么?
  • 我正在尝试更新用户配置文件。我可以创建一个,只是不能更新它。

标签: ruby-on-rails controller routes


【解决方案1】:

我希望在您的 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]

希望对您有所帮助。

【讨论】:

  • 我会从你的建议开始,看看它是如何工作的,谢谢!
  • 我删除了我所拥有的并添加了资源 :users,它成功了,谢谢!。
  • 太棒了。乐于助人!
猜你喜欢
  • 2017-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-25
  • 2015-10-13
相关资源
最近更新 更多