【发布时间】:2010-09-11 00:06:36
【问题描述】:
我有一个“购物车”模型,用户购物车 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"
从我的路线中,并在 url 中指定一个购物车 id,它可以工作,但我不想在 url 中传递购物车 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"}
【问题讨论】:
-
你是如何设置@cart 的值的?听起来这就是 nil 所以可能值得包含你的代码的那部分。
-
@cart 有效,它在 application_controller 方法中从会话中设置。
标签: ruby-on-rails session routes