44

在 Rails 3 中,Match 用于指向“GET”“POST”以及其他类型请求的操作。

match "user/account" => user#account

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

4

2 回答 2

92

match文档中,您可以使用match,只要您有via

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

编辑:添加了一个as:参数,以便可以通过 url helper 访问它。user_account_path或者user_account_url在这种情况下。

于 2013-09-13T07:10:15.560 回答
45

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

导轨 3.2

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

导轨 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"
于 2013-09-13T07:54:59.410 回答