GET 和 POST 请求的相同 Rails 4 路由

Posted

技术标签:

【中文标题】GET 和 POST 请求的相同 Rails 4 路由【英文标题】:Same Rails 4 routes for GET and POST requests 【发布时间】:2013-09-17 18:48:13 【问题描述】:

在 Rails 3 中,匹配用于指向 "GET""POST" 以及其他类型的请求的操作。

match "user/account" => user#account

现在这将指向用户控制器对 GET 和 POST 请求的帐户操作。 在 Rails 4 中“匹配”已被弃用,我们可以在 Rails 4 中为 GETPOST 创建相同的路由吗?

【问题讨论】:

match 不仅匹配 GET 和 POST... 它还将匹配 PUT、PATCH 和 DELETE。 【参考方案1】:

From the match documentation,只要有via,就可以使用match

match "user/account" => "user#account", as: :user_account, via: [:get, :post]

编辑:添加了 as: 参数,以便可以通过 url 帮助程序访问它。 user_account_pathuser_account_url 在这种情况下。

【讨论】:

我们还需要将“ :as => action_name ”与路由一起处理所有情况。【参考方案2】:

在路由上,match 方法将不再充当包罗万象的选项。您现在应该使用选项 :via

指定要响应的 HTTP 动词

导轨 3.2

match "/users/:id" => "users#show"

Rails 4.0

match "/users/:id" => "users#show", via: :get

或指定多个动词

match "/users" => "users#index", via: [:get, :post]

另一个更好的 Rails 3.2 兼容性选项是使用显式 get、post 或任何其他 HTTP 动词指定您的操作。使用此选项,您仍然可以让您的代码在今天运行,并在未来为升级提供证明。

兼容 Rails 3.2 和 4.0

get "/users/:id" => "users#show"

多个动词

get "/users" => "users#index"
post "/users" => "users#index"

【讨论】:

很好的答案,这里有更多关于 Rails 4 升级的信息:sitepoint.com/get-your-app-ready-for-rails-4 有时,我看到to:,有时只是=>。我应该为 Rails 4 使用哪一个?

以上是关于GET 和 POST 请求的相同 Rails 4 路由的主要内容,如果未能解决你的问题,请参考以下文章

如果请求和响应的 uri 相同,为啥 Microsoft Edge 在调用 POST/REDIRECT/GET 方法时发送空的 http-referer?

“POST请求还有$ _GET参数”是什么意思

GET 和 POST请求

GET 和 POST请求

GET 和 POST请求

GET 和 POST请求