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 中为 GET 和 POST 创建相同的路由吗?
【问题讨论】:
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_path
或 user_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?