当我的控制器中有一个方法时出现"No Route matches"错误



我正在使用Rails 4.2.3。 我的控制器文件中有这个,"./app/controllers/users_controller.rb"...

  def edit
    @user = User.find(session["user_id"])
    render 'edit'
  end
  def update
    @user = User.find(session["user_id"])
    if @user.update_attributes(user_params)
      flash[:success] = "Profile updated"
    end
    render 'edit'
  end

我在我的"./app/views/users/edit.html.erb"文件中有这个

    <%= form_for(@user) do |f| %>
    …
        <%= button_to "Save", { :action => "update" }, :method => :post, :class => 'button' %>

但是当我访问我的网址"http://localhost:3000/users/edit"时,我收到此错误

No route matches {:action=>"update", :controller=>"users"}

这就是我在 routes/config.rb 中所拥有的,所以我不确定为什么它会分崩离析......

  get "users/edit" => "users#edit"
  resources :users

我相信您需要使用 PUT/PATCH 方法进行更新操作,而 POST 用于根据 Rails 文档的创建操作:

    <%= button_to "Save", { :controller => "users", :id => @user.id }, :method => :put, :class => 'button' %>

此外,rake routes 是一个非常有用的命令,用于调试转储所有已定义路由的路由问题。

相关内容

最新更新