`
black_star
  • 浏览: 34391 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

ruby on rails(8)-- session1

阅读更多
   大难不死,必有后福。最近经历了一点小车祸,还好,只是腿被撞了下。信春哥,得永生。
    为了将货物保留到购物车,我们必须要用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 初体验--北大青鸟教师专题讲座PPT

    Ruby on Rails,简称RoR,是由Ruby编程语言构建的开源Web应用框架,以其高效和简洁的设计原则闻名。RoR遵循MVC(Model-View-Controller)架构模式,旨在简化Web应用开发,降低开发者的工作负担,提高开发效率。该...

    ruby on rails 教程

    **标题解析:**“ruby on rails 教程”直指文档内容旨在教授Ruby on Rails框架的基础知识和应用技巧,Ruby on Rails(RoR)是一种用于Web开发的开源框架,基于Ruby语言,它遵循MVC(模型-视图-控制器)架构模式,...

    Ruby on Rails 的 Redis 存储.zip

    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框架构建电子商务平台的项目。Ruby on Rails(RoR)是一个开源的Web应用框架,它遵循MVC(模型-视图-控制器)架构模式,以Ruby编程语言为...

    ruby on rails入门

    ### Ruby on Rails 入门知识点详解 #### Rails简介与特性 **Rails** 是一种用于构建 Web 应用程序的开源框架,它使用 **Ruby** 编程语言编写而成。Rails 自发布以来,就以其优雅、高效及易于使用的特性受到开发者...

    Ruby on Rails 3.2 Tutorial

    《Ruby on Rails 3.2 Tutorial》是Michael Hartl撰写的一本经典教程,旨在通过实践教学的方式帮助初学者掌握Rails框架。Rails是一个基于Ruby语言的开源Web应用框架,遵循MVC(模型-视图-控制器)架构模式,以其DRY...

    create todo list ruby on rails

    ### 创建To-Do List应用:使用Ruby on Rails的详尽指南 #### 一、引言与背景 在当今快速发展的互联网行业中,开发高效且功能强大的Web应用变得越来越重要。Ruby on Rails(RoR)作为一款优秀的Web应用开发框架,...

    ruby on rails 常用插件下载

    Ruby on Rails 是一个流行的开源 web 开发框架,它基于 Ruby 语言,以其“约定优于配置”的设计理念和MVC(模型-视图-控制器)架构模式而受到开发者喜爱。在这个特定的压缩包文件“login_engine”中,我们似乎有一个...

    todos-rails:适用于 Ruby on Rails 的 Todolist 应用程序

    适用于 Ruby on Rails 的 Todolist 应用程序 现场演示 要求 吉特 Ruby 导轨 部署 克隆这个存储库: git clone https://github.com/mdluo/todos.git 然后进入目录: cd todos 安装包: bundle install 然后运行...

    rails敏捷开发的购物车系统

    Rails提供了Session存储,可以用来临时存储用户的购物车信息,但这种存储方式不适用于持久保存。因此,通常我们会将购物车内容存入数据库,以便用户在不同会话之间保持购物车状态。在添加或删除商品时,更新购物车...

    Ruby-RailsFootnotes在每一个Rails页脚展示应用程序的相关信息方便调试

    Ruby on Rails是一款强大的Web开发框架,它以简洁和生产力为导向,深受开发者喜爱。在开发过程中,调试是必不可少的一部分,为了帮助开发者更有效地定位问题,Rails社区创建了多种辅助工具,其中之一便是Rails ...

    e-commerce-on-rails:一个非常简单的 Ruby on Rails 电子商务,带有活动管理员

    **Ruby on Rails 电子商务平台构建基础** Ruby on Rails(RoR)是一个基于Ruby语言的开源Web应用程序框架,它遵循模型-视图-控制器(MVC)架构模式,旨在提高开发效率和可读性。"e-commerce-on-rails"项目就是一个...

    在Ruby on Rails上使用Redis Store的方法

    在Ruby on Rails开发中,Redis Store是一个非常实用的工具,它允许开发者将Redis数据库集成到Rails应用程序中,用于缓存、session存储和HTTP缓存。Redis Store的优势在于其高速度和多功能性,使得它能够胜任数据库、...

    shopper-cart:基于 Ruby on Rails 构建的基本购物车

    《基于 Ruby on Rails 构建的基本购物车系统详解》 Ruby on Rails(简称Rails)是一种流行的开源Web应用程序框架,它以其“约定优于配置”的理念和强大的MVC(模型-视图-控制器)架构赢得了开发者们的青睐。在本文...

    shop:使用Ruby On Rails购买回购

    在本项目中,我们主要探讨的是如何利用Ruby on Rails框架构建一个购物平台,重点在于实现产品的回购功能。Ruby on Rails(简称Rails)是一款基于Ruby语言的开源Web开发框架,它遵循MVC(Model-View-Controller)架构...

    Ruby on Rails实现最基本的用户注册和登录功能的教程

    通过以上步骤,我们已经成功地使用Ruby on Rails和`has_secure_password`特性实现了用户注册与登录的基本功能。这种方法不仅简洁高效,而且安全性较高,适用于大多数Web应用程序的需求。在实际开发过程中,还可以...

    headshot:Ruby on Rails 的简单网络摄像头集成

    爆头Headshot 是一个 gem,它为 Ruby on Rails 应用程序提供了一种快速简便的方法,可以通过网络摄像头捕捉用户的照片,而无需接触 ActionScript 或 JavaScript 代码。 它通过在页面视图中嵌入 Flash 组件来访问用户...

    redis+ruby

    在Ruby on Rails框架中,Redis可以作为session存储、缓存或者实现队列服务。例如,使用Redis作为Action Cable的后台通道,实现实时通信;使用Resque或Sidekiq与Redis配合,实现后台任务队列。Rails配置文件中添加...

Global site tag (gtag.js) - Google Analytics