我正在观看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'
答案 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。
如果您正在使用较旧的应用程序,则必须遵循较旧的约定。