为什么他使用:put
我应该如何路由它?
表格:
<p>Sign Up</p>
<%= form_for @user, :as => :user, :url => new_user_path, :method => :put do |f| %>
...
<% end %>
最后有一个:put
,你可以see他没有展示如何路由:put
- 方法。
我的route.rb看起来像这样:
Calendar::Application.routes.draw do
root "welcome#index"
get "user/change_pw"
get "user/forgot_pw"
get "user/new" => "user#new"
get "user/sent_pw"
get "user/sign_in" => "user#sign_in"
get "user/signed_out" => "user#signed_out"
get "welcome/index"
post "user/sign_in" => "user#login"
post "user/new" => "user#register"
end
如果单击“注册”,则会出现以下错误:
没有路线匹配[PUT]“/ user / new”
有什么想法吗?
答案 0 :(得分:0)
看起来像个错误。只需将表单method
更改为:post
即可。 PUT
通常用于更新数据,而不是创建数据。
答案 1 :(得分:0)
“约定”表单代码不正确。对于新资源,您应该使用post
方法而不是put
方法。有关不同http方法的详细信息,请参阅Representational state transfer。
如图所示,您还已定义了post "user/new" => "user#register"
路由,因此请修改视图代码,方法是将:method => :put
删除为form_for
默认设置为post
,或者更换方法:post
。
<%= form_for @user, :as => :user, :url => new_user_path do |f| %>