Rails中的匹配和路由

meg*_*ger 12 ruby routes ruby-on-rails

我生成了一个控制器并更改了路由,但打开链接会在本地服务器上产生错误.

生成控制器和路由

rails generate controller StaticPages home about team contact
Run Code Online (Sandbox Code Playgroud)

改变routes.rb

MyApp::Application.routes.draw do
  root to: 'static_pages#home'

  match '/about',    to: 'static_pages#about'
  match '/team',     to: 'static_pages#team'
  match '/contact',  to: 'static_pages#contact'
end
Run Code Online (Sandbox Code Playgroud)

根路径有效,但"关于","团队"或"联系"链接都不起作用.这是我得到的错误:

"如果match不指定HTTP方法,则不应在路由器中使用该方法.如果要将操作公开给GET和POST,请添加via: [:get, :post]选项.如果要将操作公开给GET,请get在路由器中使用:而不是:匹配"控制器#动作"做:得到"控制器#动作""

为什么我不能使用'匹配'?

Jas*_*Kim 27

match 方法已被弃用.

使用get了GET和post为POST.

get '/about', to: 'static_pages#about'

  • +1,当前版本的[Rails路由指南](http://guides.rubyonrails.org/routing.html)没有提及"匹配"被弃用.好消息! (3认同)

小智 13

你可以使用match,你必须添加一个via:选项:

match '/about',    to: 'static_pages#about', via: :get
match '/team',     to: 'static_pages#team', via: :get
match '/contact',  to: 'static_pages#contact', via: :get
Run Code Online (Sandbox Code Playgroud)

via:如果需要,您也可以传递其他HTTP动词via: [:get, :post]

来源:Rails路由指南