[英]No route matches [POST] “/users/edit”
我正在尝试为我的申请中的注册用户创建更新表格
视图:
<h2><%= @title =%></h2>
<% if @user.errors.any? %>
<div id="error">
<h2><%= pluralize(@user.errors.count,"error") %> prohibited this user from registering</h2>
<ul>
<% @user.errors.full_messages.each do |msg| %>
<li><%= msg%></li>
<%end%>
</ul>
</div>
<%end%>
<%= form_for :user do |form| %>
<div class="reg_form">
<label for="first_name">First Name: </label>
<%= form.text_field :first_name %>
</div>
<div class="reg_form">
<label for = "last_name">Last Name: </label>
<%= form.text_field :last_name %>
</div>
<div class="reg_form">
<%=form.submit "Update"%>
</div>
<%end%>
控制器:users_controller.rb
def index
unless session[:user_id]
flash[:notice] = "Please Login first"
redirect_to :action => "new"
end
@title = "Profile"
@user=User.find(session[:user_id])
end
def edit
@title="Profile Update"
@user = User.find(session[:user_id])
if param_posted?(:user)
if @user.update_attributes(params[:user])
flash[:notice] = "Update Successful"
redirect_to :controller => "user", :action => "profile"
end
end
end
我在route.rb中加入了“ edit” =>“ users#edit”。 但是,出现错误“没有路由与[POST]“ / users / edit”匹配”
任何帮助表示赞赏。 谢谢。
您需要POST
路由来处理表单提交。 在routes.rb中尝试resources :users
,并在命令提示符下进行rake routes
,以查看所有可用的路由。
我建议您阅读《 Rails指南》,并查看使用scaffold
创建的所有方法,以及Rails如何处理针对每个方法的不同事物的路由。
RESTful edit
路径应使用GET动词。 普通的resource#edit
方法不会更改数据库,而只是创建一个填充有所选资源值的表单。 将该表单提交到resource#update
(使用PUT动词)完成了实际更改数据库的工作。
因此,您的users#edit
方法没有执行标准的RESTful编辑操作。 我建议您使用“标准方式”,除非您有充分的理由并仔细记录该理由。 我同意花一些时间看一下Rails的布线指南和香草控制器会很有用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.