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

时间:2013-09-13 07:05:04

标签: ruby ruby-on-rails-3 routes ruby-on-rails-4

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

match "user/account" => user#account

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

2 个答案:

答案 0 :(得分:83)

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

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

编辑:添加了as:参数,以便可以通过网址助手访问该参数。 user_account_path。

答案 1 :(得分:41)

在路线上,匹配方法将不再作为全能选项。您现在应该使用以下选项指定要响应的HTTP谓词:via

Rails 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"