`
black_star
  • 浏览: 33159 次
  • 性别: 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
分享到:
评论

相关推荐

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

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

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

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

    node-cookie-derail:解码并可选择验证未加密的 Ruby on Rails cookie 的签名

    饼干出轨 解码并可选择验证未加密的 Ruby on Rails cookie 的签名。 对此的替代实现要求您将 Rails 应用程序端的默认序列化格式更改为类似 JSON 的格式 - 这不是,而是使用用 javascript 编写的基本(哈希/数组/字符...

    ConferenceTrackManagement.zip

    01:00PM Ruby on Rails: Why We Should Move On 60min 02:00PM Common Ruby Errors 45min 02:45PM Pair Programming vs Noise 45min 03:30PM Programming in the Boondocks of Seattle 30min 04:00PM Ruby vs. ...

    cake php框架 v1.2(仿rails)

    最开始从Ruby On Rails框架里得到灵感。程序员可使用它来快速创建的Web应用程序。我们的首要目的是使你以一种预置的快速且不失灵活性的方式开展工作。 为什么是CakePHP? CakePHP有多个特点,这些特点让CakePHP成为...

    authie:通过数据库会话存储提高Ruby on Rails应用程序中的用户会话安全性

    这是一个Rails库,为应用程序提供数据库支持的用户会话。 这样可以确保可以从服务器使用户会话无效,并且可以轻松跟踪用户活动。 在会话中简单地设置用户ID的“传统”方式是不安全且不明智的。 如果仅执行以下示例...

    cakePHP 中文手册

    最开始从Ruby On Rails框架里得到灵感。程序员可使用它来快速创建的Web应用程序。我们的首要目的是使你以一种预置的快速且不失灵活性的方式开展工作。 为什么是CakePHP? CakePHP有多个特点,这些特点让CakePHP成为...

    plug_rails_cookie_session_store:与Rails兼容的插件会话存储

    plug_rails_cookie_session_store:与Rails兼容的插件会话存储

    redis-store:命名空间的Rack :: Session,Rack :: Cache,I18n和缓存Redis存储(用于Ruby Web框架)

    Redis Store为现代Ruby框架提供了全套存储( Cache , I18n , Session , HTTP Cache ),例如: Ruby on Rails , Sinatra , Rack , Rack :: Cache和I18n 。 它支持对象编组,超时,单个或多个节点以及名称空间...

    tempus-time-tracker:Tempus是一个时间跟踪应用程序,它允许用户在提供的类别中输入任务,以跟踪她在每个任务中花费的时间。 前端由ReactJS和Redux完成,后端由Ruby on Rails构建。 通过JWT对API进行身份验证,以确保发出请求的用户是有效用户

    Tempus时间追踪器 该项目是一个时间跟踪器,您可以在其中跟踪七个类别中的一个或总计所花费的时间。 使用的应用程序的所有信息和验证,并使用REDUX存储在应用程序中。 这是Microverse技术课程的最后一个顶峰项目。...

    CakePHP php框架 v5.0.7

    CakePHP是一个用PHP编写的开源Web应用框架,不过其模型是用Ruby on Rails设计的。作为PHP世界的Rails,CakePHP采纳了RoR的许多优秀特性,成熟度较高。在cakephp.org站点的Sites in the wild页面可以看到当前使用...

    PHP开发框架 Laravel 手册4.2-v1.0.1版压缩文件

    为了这个目的,我们博取众框架之长处集中到Laravel中,这些框架甚至是基于Ruby on Rails、ASP.NET MVC、和Sinatra等开发语言或工具的。Laravel是易于理解并且强大的,它提供了强大的工具用以开发大型、健壮的应用。...

    CakePHP php框架 v3.8.5

    CakePHP是一个用PHP编写的开源Web应用框架,不过其模型是用Ruby on Rails设计的。作为PHP世界的Rails,CakePHP采纳了RoR的许多优秀特性,成熟度较高。在cakephp.org站点的Sites in the wild页面可以看到当前使用...

    CakePHP php框架 v3.7.0 beta1.zip

    CakePHP是一个用PHP编写的开源Web应用框架,不过其模型是用Ruby on Rails设计的。作为PHP世界的Rails,CakePHP采纳了RoR的许多优秀特性,成熟度较高。在cakephp.org站点的Sites in the wild页面可以看到当前使用...

    CakePHP php框架 v3.7.8.zip

    CakePHP是一个用PHP编写的开源Web应用框架,不过其模型是用Ruby on Rails设计的。作为PHP世界的Rails,CakePHP采纳了RoR的许多优秀特性,成熟度较高。在cakephp.org站点的Sites in the wild页面可以看到当前使用...

    基于java+dom的项目源码

    Ruby on Rails混淆业务层),经过多年发展和众多用户的使用及其完善,JF已经发展成为一套国人自主的、面向对象的、基于构件(基于组件)的、成熟的优秀轻量开发框架。 JF与国内其他快速开发工具相比:JF是严格坚持...

    JdonFramework开源框架 v6.6

    Jdon Framework(简称JF)是一套适合开发中小型J2EE/...Ruby on Rails忽视了业务层服务), JF与国内其他快速开发工具相比:JF是严格坚持分层架构(表现层、业务层和持久层)下的快速开发。(注:象Deplhi/VB那样减少层

    Cookitor-crx插件

    Chrome扩展程序可解码Ruby on Rails会话cookie。 通过此扩展,您可以轻松地解码存储在cookie中的Rails会话的内容。 Rails的会话cookie存储将会话保存在序列化的base64编码的cookie中。 它还支持加密的会话cookie...

Global site tag (gtag.js) - Google Analytics