store_controller.rb

来自「ruby on rails web敏捷开发之路第二版 源代码」· RB 代码 · 共 69 行

RB
69
字号
#---# Excerpted from "Agile Web Development with Rails, 2nd Ed."# We make no guarantees that this code is fit for any purpose. # Visit http://www.pragmaticprogrammer.com/titles/rails2 for more book information.#---class StoreController < ApplicationController      before_filter :find_cart, :except => :empty_cart      def index    @products = Product.find_products_for_sale  end  def add_to_cart    begin                           product = Product.find(params[:id])      rescue ActiveRecord::RecordNotFound      logger.error("Attempt to access invalid product #{params[:id]}")      redirect_to_index("Invalid product")    else      @current_item = @cart.add_product(product)      redirect_to_index unless request.xhr?    end  end  def empty_cart    session[:cart] = nil    redirect_to_index  end    def checkout    if @cart.items.empty?      redirect_to_index("Your cart is empty")    else      @order = Order.new    end  end        def save_order    @order = Order.new(params[:order])       @order.add_line_items_from_cart(@cart)    if @order.save                             session[:cart] = nil      redirect_to_index("Thank you for your order")    else      render :action => :checkout    end  end    private    def redirect_to_index(msg = nil)    flash[:notice] = msg if msg    redirect_to :action => :index  end        def find_cart    @cart = (session[:cart] ||= Cart.new)  end  end

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?