在Rails中,map.resources现在已经过时了吗?

时间:2014-12-05 18:15:04

标签: ruby-on-rails ruby

我正在观看RailsCasts中的一集,并正在查看第145集的源代码。

这是他routes.rb文件的代码

ActionController::Routing::Routes.draw do |map|
  map.resources :orders

  map.current_cart 'cart', :controller => 'carts', :action => 'show', :id => 'current'

  map.resources :line_items
  map.resources :carts
  map.resources :products
  map.resources :categories
  map.root :products
end

我立刻被甩掉了。这看起来像一个完全不同的语法。然后我意识到这个源代码是在2010年发布的。我想知道它现在已经过时了,因为我将该代码复制并粘贴到我的Rails应用程序中并且它无法正常工作。

通常,我所做的是

resources 'orders'
root 'products'

我不知道如何重写map.current_cart

这是我收到的错误消息

NameError at/orders/new
undefined local variable or method 'map' for #<ActionDispatch::Routing::Mapper::0x4d90868>

此行突出显示

  map.current_cart 'cart', :controller => 'carts', :action => 'show', :id => 'current'

2 个答案:

答案 0 :(得分:1)

是的,现在已经过时了。

而不是map.resources只使用资源。

所以你应该写 资源:订单

答案 1 :(得分:0)

在Rails 4+中,它看起来像这样:

My::Application.routes.draw do
  get '/cart', to: 'carts#show', defaults: { id: 'current' }
end

如果这是行使路线的话,那可能是post

map参数现已消失。 My::Application取决于相关应用程序的名称。

与往常一样,在做这样的事情时要the routing documentation handy

如果您正在使用较旧的应用程序,则必须遵循较旧的约定。