使用会话时出现to_sym错误

时间:2010-09-10 14:25:07

标签: ruby-on-rails session routes

我有一个“购物车”模型,用户购物车ID存储在他们的会话中。

我的路线看起来像这样

map.resources :carts
map.cart "cart", :controller => "carts", :action => "show"

在我的节目视图中,我显示了购物车的内容,一切都很好。 然后我决定我希望用户能够从节目视图更新项目数量,所以我将其添加到视图中..

<% form_for @cart do |cart_form| %>
<% end %>

现在我收到以下错误

undefined method `to_sym' for nil:NilClass

<% form_for @cart do |cart_form| %>

有趣的是,如果我删除

map.cart "cart", :controller => "carts", :action => "show"
从我的路线

,并在网址中指定购物车ID,它可以工作,但我不想在网址中传递购物车ID。

请知道如何解决这个问题?

[更新]

rake路线如下所示:

carts GET    /carts(.:format)                               {:controller=>"carts", :action=>"index"}
POST   /carts(.:format)                               {:controller=>"carts", :action=>"create"}
new_cart GET    /carts/new(.:format)                           {:controller=>"carts", :action=>"new"}
edit_cart GET    /carts/:id/edit(.:format)                      {:controller=>"carts", :action=>"edit"}
GET    /carts/:id(.:format)                           {:controller=>"carts", :action=>"show"}
PUT    /carts/:id(.:format)                           {:controller=>"carts", :action=>"update"}
DELETE /carts/:id(.:format)                           {:controller=>"carts", :action=>"destroy"}
cart        /cart           {:controller=>"carts", :action=>"show"}

1 个答案:

答案 0 :(得分:0)

如果您不需要路线中的ID,则可以使用:

map.resource :cart, :controller => :carts