我正在使用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
答案 0 :(得分:0)
我认为您需要使用PUT / PATCH方法进行更新操作,而POST则根据Rails documentation用于创建操作:
<%= button_to "Save", { :controller => "users", :id => @user.id }, :method => :put, :class => 'button' %>
此外,rake routes
是一个非常有用的命令,用于调试转储所有已定义路由的路由问题。