Web开发敏捷之道-应用Rails进行敏捷Web开发遇到问题

问题描述

undefined method `product' for #<Product:0x48b2c44>在学习<应用Rails进行敏捷Web开发>第八章 迭代C 1 :创建购物车遇到undefined method `product' for #<Product:0x48b2c44>错误NoMethodError in StoreController#add_to_cartundefined method `product' for #<Product:0x4a02900>RAILS_ROOT: ./script/../config/..D:/InstantRails/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.3/lib/active_record/base.rb:1860:in `method_missing'#{RAILS_ROOT}/app/models/cart.rb:16:in `add_product'#{RAILS_ROOT}/app/models/cart.rb:16:in `each'#{RAILS_ROOT}/app/models/cart.rb:16:in `find'#{RAILS_ROOT}/app/models/cart.rb:16:in `add_product'#{RAILS_ROOT}/app/controllers/store_controller.rb:11:in `add_to_cart'我的cart.rb 文件代码如下lass Cart attr_reader :items def initialize @items = [] end def add_product(product) current_item = @items.find {|item| item.product == product} if current_item current_item.increment_quantity else @items << CartItem.new(product) end end endstore_controller.rb代码如下class StoreController < ApplicationController def index @products = Product.find_products_for_sale end def add_to_cart @cart = find_cart product = Product.find(params[:id]) @cart.add_product(product) end private def find_cart session[:cart] ||= Cart.new end end难道product被系统认成了一个可执行方法,而没有被认成一个对象放在items[]数据中问题补充:我按照书上把session保存到数据库中,现在把session重新生成,问题还是没有解决

解决方案

删除session文件,重起服务器再试试看

时间: 2025-01-31 09:51:02

Web开发敏捷之道-应用Rails进行敏捷Web开发遇到问题的相关文章

看《Web开发敏捷之道--应用Rails进行敏捷Web开发,第2版》一个疑问。

问题描述 看<Web开发敏捷之道--应用Rails进行敏捷Web开发,第2版>一个疑问:书上第四章说把<%......%>中的结尾标记改为-%>,才可以将%>后面的换行符输出去掉,但实际上我试了试直接用%>也是可以的,请问怎么回事儿? 解决方案 感觉在rails2.0以上,可以不用!解决方案二:书上说的换行符,只会在HTML源码中出现,不会显示在最终页面中.你点右键看生成的HTML源码就知道区别了.解决方案三:<%= simple_format @conte

敏捷模型驱动开发(AMDD):攀登敏捷软件开发的关键

Agile Model Driven Development (AMDD): The Key to Scaling Agile Software Development 敏捷模型驱动开发(AMDD):攀登敏捷软件开发的关键   Table of Contents 目录 Overview 概述 Envisioning 展望 Initial agile requirements modeling 初始化敏捷需求建模 Initial agile architecture modeling 初始化敏捷架

基于DotNet构件技术的企业级敏捷软件开发平台 - AgileEAS.NET - 会话

     会话从字面意义上来理解,是一次对话,在我们系统中怎么理解呢,会话就是一次交互,应和程序客户端和服务器端进行一个业务交互就是一个会话,会话生存与客户与服务器之内,会话在软件业中被用的很广,在Web大家很熟悉的Session,就是一个会话,他表示的是Web服务器和一个网页浏览都的一个交互,基于一个网站(应用程序的)一个交互,会话在客户浏览内在的过程中提供浏览网页需要在客户端和服务器端的一些参数.会话由浏览者开始浏览这个网站开始会话,到访问者离开该网站关闭浏览器结束会话.      在Agi

基于DotNet构件技术的企业级敏捷软件开发平台 - AgileEAS.NET - 应用在线演示/例子

     在前几天我发布了基于ActiveXForm/SmartClient的在线演示,在ActiveXForm和/SmartWin在演示中,我们用两种表现试展示了AgileEAS.NET在WinForm开发技术上的东西,今天我发布一个基于AgilEAS.NET平台基于WebForm技术的在线演示.      说明一下,这个在线演示是我的一个客户基于AgileEAS.NET的一个项目,在他的同意的前提下我拿来展示一下,因为他这个东西开发时项目时间紧张(1个开发人员不到两周时间,而且之前没做过WE

《系统分析与设计方法及实践》一2.2 敏捷软件开发

2.2 敏捷软件开发 在传统的软件开发方法中,工作人员努力构建客户想要的产品.他们花费大量的时间努力从客户那里获取需求,针对需求进行分析和建模,并且归纳成规格说明书.然后,评审说明书,与客户开会讨论,最后签字.表面上看他们开发的产品是符合客户的要求的,但通常事与愿违.在项目快要结束的时候,需求和范围.产品的适用性成为争论的焦点. 敏捷软件开发方法告诉我们开发项目是一个学习的体验.没有谁能完全理解所有需求之后才开始项目,即使是客户也一样.客户一开始有一些主意,但是他们也会随着项目的进展进一步了解他

基于DotNet构件技术的企业级敏捷软件开发平台 - AgileEAS.NET - ORM访问器

    上一篇文章AgileEAS.NET之数据关系映射ORM简单介绍了一下AgileEAS.NET平台中ORM对象的组织机构体系,但并没有对其所执行的数据存取操作介绍,在AgileEAS.NET中,我对ORM实体及其上的数据操作实现进行了分离,实体对象只呈现数据,而实体的增加.修改.更新.删除.缓存操作都通过ORM访问器实现.     在AgileEAS.NET两个访问器IOrmAccessor和ICacheAccessor访问器. IOrmAccessor完成ORM对象(实体和表)和数据库的

基于DotNet构件技术的企业级敏捷软件开发平台 - AgileEAS.NET - 对象控制反转

     控制反转,即IOC(Inversion of Control),也叫反转模式,也称依赖注入DI(Dependency Injection)模式,关于此概念的解释我在此文不做过讲说明.      对于设计模式类的东西,我也没有认真系统的去研究过那X类N种设计模式,无论何种设计模式,都用于解决一个问题,那就是解决对象之间的耦合关系,即解耦.      AgileEAS.NET在最初版本最不包含IOC容器,更多应用抽象工厂之类的设计模式,在这AgileEAS.NET大概第二个版本,加入了一个

基于DotNet构件技术的企业级敏捷软件开发平台 - AgileEAS.NET - 服务定位器(SL)与AgileEAS.NET中的实现

        首先说一下 ,或许我是个懒汉,博客差不多已经一个月没有写了,给朋友们说声抱歉,最近发生了很多事,南方洪水呀洪水,北方热呀热,兰州遇到不知道多少年没有遇到的40度高温,其实说这些是扯谈的事,还得要生活啊,原本已经睡下了,睡不着怕起来写了这篇Post.         言归正传,在设计模块上有这么一个模块Service Locator模式,大概就是我叫他服务定位器的家伙,AgileEAS.NET平台服务定位器理论上也实现了这种模式,他做为对象控件反转IOC的一个补充,共同完成对象(服

基于DotNet构件技术的企业级敏捷软件开发平台 - AgileEAS.NET - 关于AgileEAS.NET的一些补充说明

       首先,关于支持.NET Framework 版本问题;AgileEAS.NET最初是基于.net1.1的,目前网上能看到的基于早期版本的只有租吧二手房交易软件和售楼软件,之后2007年开始转移到net2.0版本,到目前为止,基于.net2.0,或许有人说,是否可以考虑基于.net3.5,.net4.0,这个就目前情况来说,还是基于.net2.0,因为对于企业管理信息系统来讲.net2.0足够了,我所熟悉的很多.net应用都是基于2.0版本,当然在以后我会根据需要增加.net4.0版