大难不死,必有后福。最近经历了一点小车祸,还好,只是腿被撞了下。信春哥,得永生。
为了将货物保留到购物车,我们必须要用cookie or session。cookie将信息保留到浏览器,session服务器。rails里面的先将信息用cookie 收集,然后服务器根据cookie name找到对应的session id 。然后处理。session的存储可以由文件,数据库,其他。部署又是一节内容。这里用数据库。rails会保留一张session的表
首先,创建session表 rake db:session:create 然后迁移 rake db:migrate
接下来修改app/controller下面的application.rb文件
session :session_key => '_depot_session_id'
helper :all # include all helpers, all the time
# See ActionController::RequestForgeryProtection for details
# Uncomment the :secret if you're not using the cookie session store
protect_from_forgery :secret => 'ef0281b01f396605f500c00890ceb10f'
添加session :session_key => '_depot_session_id', 表示将session id存贮在name为_depot_session_id'。
protect_from_forgery #:secret => 'ef0281b01f396605f500c00890ceb10f' #去掉注释。
准备工作完成,下一步。
在app/controller/store_controller.rb 插入代码
private
def find_cart
session[:cart] ||= Cart.new
end
session[:cart] ||= Cart.new 表示 session[:cart] = session[:cart] || Cart.new 如果前面session[:cart]不存在,则创建Cart.new.在models下创建Cart.rb
class Cart
attr_reader :items
def initialize
@items = [] #创建一个数组
end
def add_product(product)
@items << product #add product to 数组
end
end
创建add_to_cart action。在app/controller/store_controller.rb
def add_to_cart
@cart = find_cart
product = Product.find(params[:id])
@cart.add_product(product)
end
params处理所有浏览器传过来的参数。params[:id]保存参数id。
然后写对应的add_to_cart.html.erb
<h1>Your Pragmatic Cart</h1>
<ul>
<%for item in @cart.items%>
<li><%=h item.title%><%=h item.description %></li>
<%end%>
</ul>
总结下整个流程。在store/index.html.erb 点击button,在controller寻找add_to_cart action。同时将product通过id标示传递给浏览器。然后创建session 。继而调用class Cart 创建实例,其实就是个数组。然后通过Product.find(params[:id])得到传递的product,最后@cart.add_product(product)。存储在数组里,最后通过页面显示
- 大小: 17.4 KB
- 大小: 25.6 KB
- 大小: 12.3 KB
分享到:
相关推荐
Ruby on Rails,简称RoR,是由Ruby编程语言构建的开源Web应用框架,以其高效和简洁的设计原则闻名。RoR遵循MVC(Model-View-Controller)架构模式,旨在简化Web应用开发,降低开发者的工作负担,提高开发效率。该...
**标题解析:**“ruby on rails 教程”直指文档内容旨在教授Ruby on Rails框架的基础知识和应用技巧,Ruby on Rails(RoR)是一种用于Web开发的开源框架,基于Ruby语言,它遵循MVC(模型-视图-控制器)架构模式,...
Ruby on Rails 的 Redis 存储redis-rails为Ruby on Rails提供全套存储(Cache、Session、HTTP Cache)。请参阅redis-store 主自述文件以了解一般准则。关于 Rails 5.2 的简要说明Rails 5.2.0包含一个开箱即用的 ...
《基于Ruby On Rails的在线购书系统》是一个深入探讨如何利用Ruby on Rails框架构建电子商务平台的项目。Ruby on Rails(RoR)是一个开源的Web应用框架,它遵循MVC(模型-视图-控制器)架构模式,以Ruby编程语言为...
### Ruby on Rails 入门知识点详解 #### Rails简介与特性 **Rails** 是一种用于构建 Web 应用程序的开源框架,它使用 **Ruby** 编程语言编写而成。Rails 自发布以来,就以其优雅、高效及易于使用的特性受到开发者...
《Ruby on Rails 3.2 Tutorial》是Michael Hartl撰写的一本经典教程,旨在通过实践教学的方式帮助初学者掌握Rails框架。Rails是一个基于Ruby语言的开源Web应用框架,遵循MVC(模型-视图-控制器)架构模式,以其DRY...
### 创建To-Do List应用:使用Ruby on Rails的详尽指南 #### 一、引言与背景 在当今快速发展的互联网行业中,开发高效且功能强大的Web应用变得越来越重要。Ruby on Rails(RoR)作为一款优秀的Web应用开发框架,...
Ruby on Rails 是一个流行的开源 web 开发框架,它基于 Ruby 语言,以其“约定优于配置”的设计理念和MVC(模型-视图-控制器)架构模式而受到开发者喜爱。在这个特定的压缩包文件“login_engine”中,我们似乎有一个...
适用于 Ruby on Rails 的 Todolist 应用程序 现场演示 要求 吉特 Ruby 导轨 部署 克隆这个存储库: git clone https://github.com/mdluo/todos.git 然后进入目录: cd todos 安装包: bundle install 然后运行...
Rails提供了Session存储,可以用来临时存储用户的购物车信息,但这种存储方式不适用于持久保存。因此,通常我们会将购物车内容存入数据库,以便用户在不同会话之间保持购物车状态。在添加或删除商品时,更新购物车...
Ruby on Rails是一款强大的Web开发框架,它以简洁和生产力为导向,深受开发者喜爱。在开发过程中,调试是必不可少的一部分,为了帮助开发者更有效地定位问题,Rails社区创建了多种辅助工具,其中之一便是Rails ...
**Ruby on Rails 电子商务平台构建基础** Ruby on Rails(RoR)是一个基于Ruby语言的开源Web应用程序框架,它遵循模型-视图-控制器(MVC)架构模式,旨在提高开发效率和可读性。"e-commerce-on-rails"项目就是一个...
在Ruby on Rails开发中,Redis Store是一个非常实用的工具,它允许开发者将Redis数据库集成到Rails应用程序中,用于缓存、session存储和HTTP缓存。Redis Store的优势在于其高速度和多功能性,使得它能够胜任数据库、...
《基于 Ruby on Rails 构建的基本购物车系统详解》 Ruby on Rails(简称Rails)是一种流行的开源Web应用程序框架,它以其“约定优于配置”的理念和强大的MVC(模型-视图-控制器)架构赢得了开发者们的青睐。在本文...
在本项目中,我们主要探讨的是如何利用Ruby on Rails框架构建一个购物平台,重点在于实现产品的回购功能。Ruby on Rails(简称Rails)是一款基于Ruby语言的开源Web开发框架,它遵循MVC(Model-View-Controller)架构...
通过以上步骤,我们已经成功地使用Ruby on Rails和`has_secure_password`特性实现了用户注册与登录的基本功能。这种方法不仅简洁高效,而且安全性较高,适用于大多数Web应用程序的需求。在实际开发过程中,还可以...
爆头Headshot 是一个 gem,它为 Ruby on Rails 应用程序提供了一种快速简便的方法,可以通过网络摄像头捕捉用户的照片,而无需接触 ActionScript 或 JavaScript 代码。 它通过在页面视图中嵌入 Flash 组件来访问用户...
在Ruby on Rails框架中,Redis可以作为session存储、缓存或者实现队列服务。例如,使用Redis作为Action Cable的后台通道,实现实时通信;使用Resque或Sidekiq与Redis配合,实现后台任务队列。Rails配置文件中添加...