什么是不同的:method => :put和=> :发布+路由

时间:2014-04-10 14:24:36

标签: ruby-on-rails ruby ruby-on-rails-4 put

为什么他使用: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”

有什么想法吗?

2 个答案:

答案 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| %>