【问题标题】:to_sym error when using sessions使用会话时出现 to_sym 错误
【发布时间】: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


【解决方案1】:

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

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

【讨论】:

  • 用你的建议替换我的两条路线效果很好,谢谢,但我真的不明白为什么。我的路线有冲突吗?
  • “rake gems”与旧路线的输出是什么?
  • 我不明白为什么它会与你定义的路由崩溃,你能告诉我你得到的错误的踪迹吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-12-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-10
  • 2017-06-27
  • 1970-01-01
  • 2016-11-21
相关资源
最近更新 更多