我正在使用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
是一个非常有用的命令,用于调试转储所有已定义路由的路由问题。