虽然我的控制器中有方法,但是“无路由匹配”错误

时间:2016-03-19 14:35:33

标签: ruby-on-rails configuration routes

我正在使用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

1 个答案:

答案 0 :(得分:0)

我认为您需要使用PUT / PATCH方法进行更新操作,而POST则根据Rails documentation用于创建操作:

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

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