在 Rails 3 中,Match 用于指向“GET”和“POST”以及其他类型请求的操作。
match "user/account" => user#account
现在这将指向用户控制器对 GET 和 POST 请求的帐户操作。在Rails 4中“匹配”已被弃用,我们可以在 Rails 4 中为GET和POST创建相同的路由吗?
在 Rails 3 中,Match 用于指向“GET”和“POST”以及其他类型请求的操作。
match "user/account" => user#account
现在这将指向用户控制器对 GET 和 POST 请求的帐户操作。在Rails 4中“匹配”已被弃用,我们可以在 Rails 4 中为GET和POST创建相同的路由吗?
从match
文档中,您可以使用match
,只要您有via
:
match "user/account" => "user#account", as: :user_account, via: [:get, :post]
编辑:添加了一个as:
参数,以便可以通过 url helper 访问它。user_account_path
或者user_account_url
在这种情况下。
在路由上,match 方法将不再充当包罗万象的选项。您现在应该使用选项 :via 指定要响应的 HTTP 动词
match "/users/:id" => "users#show"
match "/users/:id" => "users#show", via: :get
match "/users" => "users#index", via: [:get, :post]
更好的 Rails 3.2 兼容性的另一个选择是仅使用显式 get、post 或任何其他 HTTP 动词指定您的操作。使用此选项,您仍然可以让您的代码在今天运行,并在未来为升级提供证明。
get "/users/:id" => "users#show"
get "/users" => "users#index"
post "/users" => "users#index"