<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    efa's blog

    以用戶角度出發,你就已經成功一半了.

    導航

    <2014年11月>
    2627282930311
    2345678
    9101112131415
    16171819202122
    23242526272829
    30123456

    統計

    常用鏈接

    留言簿(18)

    我參與的團隊

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    Bi report

    dba

    info security

    other

    perl

    php

    python

    tech blogs

    tech websites

    最新隨筆

    搜索

    積分與排名

    最新評論

    閱讀排行榜

    評論排行榜

    [rails] 我的訂餐系統 -- 小試ruby on rails

    • 前言
              近期在java社區中一種新的腳本語言ruby,及用ruby開發的一個wab框架 rails也熱鬧了起來.引起了不少的java開發人員的關注.
        本人平時還是很少接觸腳本語言方面東東,看到相關的評論
      例如:  "習慣約定優于配置" -- 那樣就用象java那樣麻煩且繁雜地配置N多XML
                 "'一站式'面向用戶的簡單易用的框架"    
                 "Ruby 語言- 真正的面向對象腳本語言"
                 "Ruby 語法更簡單,靈活" 
         "聲稱:Rails 的開發效率是 java 開發的 10 倍"
      等等,再得到老大的強烈推薦,不禁也開始接觸了一下.
            
      聲明:本人接觸三天,看過一些簡單的介紹以及一些文檔,實操過一個小項目,并未深入了解,這一文章并非語言及框架使用教程,只是一個感性認識,其中代碼或許并非最簡潔,如要更深入學習ruby,rails,請參考相關的官方站點以及其語法參數書.
    • Ruby 與 Rails
      [什么是RUBY ?] 
              Ruby 是由日本人松本行弘發明的一種面向對象的腳本語言.
      聲稱,更快,更通俗易懂的面向對象的語言,本人接觸這段時間,感覺到關于面向對象的確做得不錯.
      一些特點:
      1、一切都是對象,例如:
              數據類型轉換提供如 to_ary,to_i,to_s 等方法,
              
      @i = "2".to_i    //字符串轉數值類型
      puts @i
      +1

              不再象java中的諸如:
               Integer.parseInt()
              String.valueOf()
              那樣難看與及難以理解
              Time.now.strftime(fmt) Time.now對象通過strftime格式化日期類型
        再如koalant在它那本ruby on rails實踐中說到   -166.abs 可以直接取其-166絕對值
               ………………
      2、代碼塊非強制用{} ,無需 ;  作分行標識;
      3、語法靈活,一種可以功能可多種實現,隨個人愛好;
      4、語法簡潔等,做一個應用只要用到幾行代碼,這也是腳本語言的優勢所在
              
              更詳細可參考 http://www.ruby-lang.org/ 以及下面提供的些文檔資料.
             
      [什么是Rails ?]
              RAILS是用RUBY開發的一個web框架.
              實現一站式開發.        http://www.rubyonrails.org/ 有比較詳細的介紹.
      Rails is a full-stack, open-source web framework in Ruby for writing real-world applications with joy and less code than most frameworks spend doing XML sit-ups
              聲稱用更少的代碼實現web applications。
              此框架主要包括三部分
              Active Record  一個ORM實現
              Action Pack      View 以及controller
              Action Mailer    應該是關于mail方面的東西


      [一些資料]
      [1] koalant寫的Ruby on Rails實踐  ,通俗易懂,介紹了ruby on onrails中的一些基礎的東東
      [2] IBM中文文章: Ruby on Rails 和 J2EE:兩者能否共存?
      [3] Agile Web Development with Rails(以一個案例詳細介紹了ruby on rails)
       下載請見:
      http://www.itpub.net/398528.html
      [4] Ajax on Rails http://www.onlamp.com/pub/a/onlamp/2005/06/09/rails_ajax.html 
      [5] Programming Ruby http://www.rubycentral.com/book/index.html
    • 快速安裝
      1、下載
             到目前為止最新版本是Ruby 1.8.2,可以到http://rubyforge.org/frs/?group_id=167&release_id=2049
              下載 One-Click Installer - for Windows
      2、點擊下載exe文件一直NEXT 安裝就OK [ 說明:本人安裝在C:\ruby\目錄]
      3、使用 rubygems 來安裝 rails
            CMD進行命令行窗口,通過網絡進行遠程安裝 rails
      C:\> gem install rails --include-dependencies
      //
       Attempting local installation of 'rails'
      Local gem file not found: rails*.gem
      Attempting remote installation of 'rails'
      Updating Gem source index for: http://gems.rubyforge.org
      ………………
      ………………//一連串安裝信息

      C:\> rails C:
      /myrails         //建立web app 目錄
            create
            create  app/apis
            create  app/controllers
            create  app/helpers
            create  app/models
            create  app/views/layouts
            create  config/environments
            create  components
            create  db
            create  doc
            create  lib
            create  log

            說明如果發現gem,rails命令等用不了,可能是環境變量未設置好,
            可自行設置指向你的 安裝目錄/bin
            
        4、運行服務器
              
      C:\> ruby c:\myrails\script\server
      => Rails application started on http://0.0.0.0:3000
      => Ctrl-C to shutdown server; call with --help for options
      [2005-08-11 20:29:56] INFO  WEBrick 1.3.1
      [2005-08-11 20:29:56] INFO  ruby 1.8.2 (2004-12-25) [i386-mswin32]
      [2005-08-11 20:29:56] INFO  WEBrick::HTTPServer#start: pid=4072 port=3000
      127.0.0.1 - - [11/Aug/2005:20:30:08 China Standard Time] "GET / HTTP/1.1" 200 32
      34
      - -> /
      127.0.0.1 - - [11/Aug/2005:20:30:09 China Standard Time] "GET / HTTP/1.1" 304 0
      - -> /
      127.0.0.1 - - [11/Aug/2005:20:30:24 China Standard Time] "GET / HTTP/1.1" 304 0
      - -> /

      http://127.0.0.1:3000 
      恭喜你,如果看到
      Congratulations, you've put Ruby on Rails!頁面
      則表示安裝成功!!!!

      5、 學習一個Ruby的語法
           ruby  以rb為后綴的文件. 
      hello.rb
      @a = "hello world!"
      puts @a

      C:\ruby\bin>ruby hello.rb
      hello world!
      其它可參考語言書學習.
    • 我的訂餐系統

      1、功能,包括四類基本管理,主要是新增,修改,查看,刪除(CURD) 四種操作
            餐廳管理(shop)
            菜式管理(good)
        人員管理(human)
            訂單管理(order)
        
      2、首頁效果截圖

                    由于本人偷懶,樣式借用了jsp wiki的,在此聲明一下: )
    [主界面,使用frame,左邊為主要功能菜單,右邊為進行CURD操作提供界面操作]

    orderList[1].gif

    [頁面結構如下所示]
    orderList[2].gif

    • 員工管理
      1、快速開發,自動生成基本文件結構目錄及文件
            執行命令,自動生成項目所需要的文件及其文件結構,幾秒種架設好訂餐系統框架!!!
            
      C:\myrails>rails c:\myMealOrder

             說明:rails 一直貫穿的思想說是"習慣約定優于配置",所以,文件結構都是它定義的,我們只要將相應
                     文件放到其定義好的目錄下就行了。
                      例如:controller 應該放到其 webapp/app/controllers 下,本文目錄為[C:\myMealOrder\app\controllers]
                                  model 應該放到其      webapp/app/model下,本文目錄為[C:\myMealOrder\app\model]
                                  views 應該放到其      webapp/app/view下,本文目錄為[C:\myMealOrder\app\views]
                另外,根本目錄為webapp/public/ 你可以通過修改index.html來定義你自己的index頁面
        
              2、啟動webrick 服務器測試
                    rails默認使用webrick服務器,官方網站了解其更多www.webrick.org
                   執行命令
                   

    C:\>ruby c:\myMealOrder\script\server 


                  打開IE 瀏覽 :http://127.0.0.1:3000
                 看到Congratulations, you've put Ruby on Rails!表示配置成功
      
    3、建立數據庫以及進行配置
        CREATE TABLE humen (
        id int(11) NOT NULL auto_increment,
        code varchar(100) NOT NULL default '',
        mame varchar(100) NOT NULL default '',
        PRIMARY KEY  (`id`)
      )      
        說明,習慣約定,默認情況下主鍵名為id,表名為復數形式,具體操作我也有點糊涂,
        例如本例子中的human model對應其數據表名為humen。這里我就略過了。具體資料可參考更詳細的資料。
        配置,打開 C:/myMealOrder/config/database.yml
        將其中參數設置正常就行了。
        例如將 database: rails_development 設成你的數據名等

      4、生成human 的 model,controller文件
      

     ruby c:\myMealOrder\script\generate controller human
          exists  app
    /controllers/
          exists  app
    /helpers/
          create  app
    /views/human
          exists  test
    /functional/
          create  app
    /controllers/human_controller.rb
          create  test
    /functional/human_controller_test.rb
          create  app
    /helpers/human_helper.rb

     ruby c:\myMealOrder\script\generate model human
          exists  app
    /models/
          exists  test
    /unit/
          exists  test
    /fixtures/
          create  app
    /models/human.rb
          create  test
    /unit/human_test.rb
          create  test
    /fixtures/humen.yml


         
         4、快速實現CURD
        打開app/controllers/human_controller.rb文件,修改為

       class HumanController < ApplicationController
              scaffold :human
      end


      說明: 簡單的一句 "scaffold :human" 就能對應生成human 的CURD操作及其頁面。
      重啟服務,再次瀏覽   http://127.0.0.1:3000/human
       action包括:
       list(列表,列出所有human),new(新建human),show(顯示human),update(更新human),Destroy(物理刪除human),界面如下圖
    list.gifnew.gifedithuman.gif
       我們可以注意其URL
       http://127.0.0.1:3000/human/new
       http://127.0.0.1:3000/human/show/1
       http://127.0.0.1:3000/human/edit/1
       http://127.0.0.1:3000/human/destroy/2
       rails也是MVC的模式,
       1、瀏覽器發出請求;
       2、后臺尋找(new/show/edit/destroy/etc) controller,調用相對應的方法,及view模板;
       3、將結果返回給瀏覽者
       或許你會認為,這一默認的view大多數情況下并不適合,或許需要自己設計view模板,也行,rails提供快捷的方法
       方便用戶自己設計view模板,只要定義action并將同名view文件(rhtml后綴的文件)放到其webapp/app/views/目錄即可,
       下面將會介紹到相關的操作。
       

    • 餐廳及其菜式管理
      餐廳(shop),菜色(good)按員工管理操作方法進行新建,在這里就略過了!!
      http://127.0.0.1:3000/shop
      http://127.0.0.1:3000/good

      1、自己設計view 模板
            例如在餐廳列表中我要實現自己的樣式,如下圖:
      shoplist.gif
           具體操作, 新增加 myMealOrder\app\views\shop\list.rhtml (rails中以.rhtml為view模板文件)
        
      <table border="1" width="500px">
      <tr>
      <td width="20%"><p align="center"><i><b>code</b></i></td>
      <td width="20%"><p align="center"><i><b>餐廳名</b></i></td>
      <td width="20%"><p align="center"><i><b>電話</b></i></td>
      <td width="20%"><p align="center"><i><b>備注</b></i></td>
      <td width="10%"><p align="center"><i><b>編輯</b></i></td>
      <td width="10%"><p align="center"><i><b>刪除</b></i></td>
      </tr>
      <% @shops.each do |shop| %>                  //ruby 語法,循環所有shop
      <tr>
      <td><%= shop.code %></td>
      <td><%= link_to shop.name, :action => "show", :id => shop.id %></td>
      <td><%= shop.phone %></td>
      <td><%= shop.remark %></td>
      <td><%= link_to "編輯", :action => "edit", :id => shop.id %></td>
      <td><%= link_to "刪除", :action => "destroy", :id => shop.id ,:confirm => "Are you sure?" %></td>
      </tr>
      <% end %>
      </table>

      [1]
      <%
       @shops.each do |shop| %>                 
             //ruby 語法,循環所有shop
      <% end %>

      [2] <%= link_to shop.name, :action => "show", :id => shop.id %>
      生成<a>標簽

      修改shop_controller.rb
          def list
              @shops 
      = Shop.find_all
          end

      http://127.0.0.1/shop/list 即可發現我們定義的view生效了 :)
      2、進行兩表關聯
            good 與 shop 關系為多對一的關聯
            [1] 要實現在編輯good時可設置其所性shop,先為good表shop_id字段,關聯shop表

            [2] 修改model文件,具體語法可參見相關的參考書本.這里就略過了
      class Good < ActiveRecord::Base
        belongs_to :shop
      end

      class Shop < ActiveRecord::Base
          has_many :goods
      end
      [3] 編輯controller 
        def edit
              @good 
      = Good.find(@params["id"])
              @shops 
      = Shop.find_all
          end
      [4] 為good 增加view.rhtml

      <select name="good[shop_id]">
      <% @shops.each do |shop| %>
      <option value="<%= shop.id %>"
      <%= ' selected' if shop.id == @good.shop.id %>>
      <%= shop.name %>
      </option>
      <% end %>
      </select>

      3、正確命名,自動綁定到objcet中
      在java 我們要實現form中的控件提交后自動綁定到object要借用到beanUtil并自己作N多擴展.
      rails中提供了快捷的方法,自要你按要求定義好控件名就能幫自己綁定.
      例如上面的 good[shop_id] 或  good[id] ,good[name] 等等
    • 訂單管理
      1、order及item關聯操作
                      @orderItem = OrderItem.new()
                      @human 
      = Human.find(@value)
                      @good_no_param 
      = "good_" + @value
                      @good 
      = Good.find(params[@good_no_param])
                      @orderItem.human 
      = @human
                         //為item綁定正確的員工及其訂的盒飯
                      @orderItem.good 
      = @good
                      @orderItem.order 
      = @order
                      @orderItems 
      << @orderItem
                         //為order綁定新的item
                         @order.orderItems = @orderItems
                         @order.save  //保存

      說明一下,這樣操作,修改order 時原item值并沒刪除或正確的修改,只是將item 的order_id設為0
      另外再增加相應的item.關于這方面的正確用法還有待研究:)
    • 其它代碼簡單介紹
       1、日期操作

              @date = @params["date"]
              fmt 
      = "%Y-%m-%d"
              
      if @date
              
      else
                  @date 
      = Time.now.strftime(fmt)
              end

       2、 find一個對象
          
      Order.find(params[:id])

       3、條件查詢
          @shopId = @params["shopId"]
              @goods 
      = Good.find(:all,
                                                   :conditions 
      => "shop_id = "+@shopId,
                                                   :order 
      => "code desc")

          
       3、 跳轉頁面
          
      redirect_to(:action => 'edit')


       4、session應用
         
      session[:good] ||= Good.find(params[:id]) 
    • 問題
      記錄下在開發過程中遇到的問題
      1、沒相應的工具支持,操作起來還是比較麻煩的,雖然代碼量很少
      2、并不是很健壯,發現挺容易出錯,而且出錯信息也不全
      3、性能還有待增強,(筆者一邊聽歌一邊開發,發現在運行程序時,不時會影響我的wmplayer播放)
    • 思考與總結
      本文并非建議大家使用ruby on rails,因為在應用過程中畢竟發現不少的問題.
      然而我們能學習些什么呢??
      [1] 工具支持 
      [2] 習慣優于配置
      [3] 一站式的開發
      [4] 更少的代碼
      我想在那么大的java 開源社區中實現一站式的開發還是不現實的.
      筆者在想是否能有一個開源項目或者是落實到一個公司的技術框架中能實現到這幾點,那樣就可以從繁雜的配置以及少了為找N多個開源包或版本的問題而煩惱,而能專心于需求的確認及相關的業務邏輯的改進等等  : )   (完)

    posted on 2005-08-14 14:54 一凡@ITO 閱讀(15776) 評論(28)  編輯  收藏

    評論

    # re: 我的訂餐系統 -- 小試ruby on rails 2005-08-15 14:59

    莫非是PDC (GLTc)成員?  回復  更多評論   

    # re: 我的訂餐系統 -- 小試ruby on rails 2005-08-15 19:54 一天一點

    what is "PDC (GLTc)"???  回復  更多評論   

    # re: [rails] 我的訂餐系統 -- 小試ruby on rails 2005-08-25 13:08 江南白衣@ITO

    又多一個ror 扇子阿,非常詳細,贊。  回復  更多評論   

    # re: [rails] 我的訂餐系統 -- 小試ruby on rails 2005-08-30 12:19 bb

    Ror 出1.0的時候可能會好點。
    0.13號稱是1.0 Milestone版本前的最后一個版本了  回復  更多評論   

    # re: [rails] 我的訂餐系統 -- 小試ruby on rails 2005-08-30 12:19 lu lin

    作者的文章好詳細,推介。  回復  更多評論   

    # re: [rails] 我的訂餐系統 -- 小試ruby on rails 2005-09-01 12:46 Water Ye@ITO

    沒有ide支持的語言, 生產力不夠, 但ruby on rails的思想不錯  回復  更多評論   

    # re: [rails] 我的訂餐系統 -- 小試ruby on rails 2005-09-26 10:58 陸陽

    您好,小弟剛剛接觸ruby,對網頁設計還一竅不通,能否提供這個訂餐系統的源碼,不勝感激.可以發到我的郵箱,luyang@kongzhong.com.謝謝啦  回復  更多評論   

    # re: [rails] 我的訂餐系統 -- 小試ruby on rails 2005-09-26 12:43 David Xu

    對網頁設計還一竅不通,怎么那么快學習ruby了?
    建議先學習一下基礎 ^-^,慢慢來  回復  更多評論   

    # re: [rails] 我的訂餐系統 -- 小試ruby on rails 2005-10-22 11:23 jasper

    session[:good] ||= Good.find(params[:id])

    :代表什么?

    不加“:”不行嗎?  回復  更多評論   

    # re: [rails] 我的訂餐系統 -- 小試ruby on rails 2005-12-06 23:08 jacky000

    性能還不錯啦,就是啟動的時候要慢一些。  回復  更多評論   

    # re: [rails] 我的訂餐系統 -- 小試ruby on rails 2005-12-09 21:26 cjl123

    請問作者怎樣能顯示出中文字出來  回復  更多評論   

    # re: [rails] 我的訂餐系統 -- 小試ruby on rails 2006-02-14 22:58 Anubis

    嘿嘿,兄臺把源碼交出來吧  回復  更多評論   

    # re: [rails] 我的訂餐系統 -- 小試ruby on rails 2006-02-16 12:45 davidxu

    to cjl123
    顯示中文字沒什么特別的設置
    to Anubis
    源碼不值下載,想學習還請這位朋友看看書,實踐一下落不明 :)  回復  更多評論   

    # re: [rails] 我的訂餐系統 -- 小試ruby on rails 2006-04-20 23:45 默海飛瀑

    挺好的
    現在已經到1.1.2了吧
    對于IDE,最近試過Komodo
    還算不錯  回復  更多評論   

    # re: [rails] 我的訂餐系統 -- 小試ruby on rails 2006-07-02 01:15 kc

    不錯!up  回復  更多評論   

    # re: [rails] 我的訂餐系統 -- 小試ruby on rails 2006-07-10 09:21 kevin_001

    再簡單也只是一個腳本語言,一個玩具而已。

    各位有用ruby開發項目的嗎?  回復  更多評論   

    # re: [rails] 我的訂餐系統 -- 小試ruby on rails 2006-07-24 18:46 kc

    上面的兄臺真是挺幼稚的。  回復  更多評論   

    # re: [rails] 我的訂餐系統 -- 小試ruby on rails 2006-09-04 10:13 misubaby

    <td><%= link_to shop.name, :action => "show", :id => shop.id %></td>

    暈死了,上面這句話始終沒有作用,傳不了參數!!!  回復  更多評論   

    # 晴軟網上訂餐系統V2.0 2006-09-28 09:01 晴軟

    晴軟在線訂餐系統 V2.0
    演示:http://www.fj3x.com
    除了少部分沿用了V1.2的功能外,大量的擴充了新的功能。
    主要新加入的功能有:自動更新訂單列表、訂單打印、多分店多城市地區管理、餐幣消費折扣、充值卡、消費積分及積分排行、多層次管理員、購物籃結合訂餐者實現團體訂餐、多狀態訂單、各分店獨立管理、配送員與訂單結合、圖形統計與財務結算、以及人性化的后臺操作界面。
    歡迎朋友們加入網上訂餐行列!
    詳細說明 http://www.qruan.com/order2-0.asp
    演示:http://www.fj3x.com
    程序下載地址一:http://www.qruan.com/rong/qruan.rar
    程序下載地址二:http://www.fj3x.com/qruan.rar
    相關文章:http://www.qruan.com/bbs/dispbbs.asp?boardID=6&ID=386&page=1  回復  更多評論   

    # re: [rails] 我的訂餐系統 -- 小試ruby on rails 2006-10-15 20:31 fly

    就是啊,不了解就不要亂說,最討厭這種人了@kc
      回復  更多評論   

    # re: [rails] 我的訂餐系統 -- 小試ruby on rails 2007-03-28 16:11 應用之美

    謝謝了,收獲很多 :)  回復  更多評論   

    # re: [rails] 我的訂餐系統 -- 小試ruby on rails 2007-04-04 15:10 點石金科技

    不錯  回復  更多評論   

    # re: [rails] 我的訂餐系統 -- 小試ruby on rails 2007-09-24 15:28 am

    學習。寫得挺好的。  回復  更多評論   

    # re: [rails] 我的訂餐系統 -- 小試ruby on rails 2008-03-10 20:21 牛仔

    我下載來做做看怎么樣 ,  回復  更多評論   

    # re: [rails] 我的訂餐系統 -- 小試ruby on rails 2009-01-02 20:13 sudi

    速遞網上訂餐系統免費使用和下載

    官網:http://www.dc135.cn
    演示網站:http://www.dc135.cn/index.aspx
    演示后臺:http://www.dc135.cn/admin/login.aspx
    管理員登陸帳戶跟密碼都為:admin

    下載網址:http://www.dc135.cn/download.aspx  回復  更多評論   

    # re: [rails] 我的訂餐系統 -- 小試ruby on rails 2011-12-31 13:47 快樂大本營

    博主厲害!  回復  更多評論   

    # re: [rails] 我的訂餐系統 -- 小試ruby on rails 2014-11-26 17:43 btbear

    @kevin_001
    上面的兄臺真是挺幼稚的  回復  更多評論   

    # re: [rails] 我的訂餐系統 -- 小試ruby on rails 2014-11-26 17:43 btbear

    上面的兄臺真是挺幼稚的  回復  更多評論   


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 亚洲Av高清一区二区三区| 美女露100%胸无遮挡免费观看| 亚洲AV电影院在线观看| 亚洲色最新高清av网站| 99久久99这里只有免费的精品| 妞干网免费视频观看| 亚洲高清视频在线观看| 久久国产精品2020免费m3u8| 亚洲国产精品人人做人人爽| 亚洲熟女乱色一区二区三区| 成人免费看片又大又黄| 亚洲欧洲日本精品| 国产情侣久久久久aⅴ免费 | 国产偷v国产偷v亚洲高清| 亚洲乱妇熟女爽到高潮的片 | 特黄aa级毛片免费视频播放| 亚洲AV中文无码乱人伦| a毛片免费在线观看| 亚洲成人精品久久| 日韩欧毛片免费视频| 亚洲久本草在线中文字幕| 老司机精品免费视频| 亚洲国产中文v高清在线观看| 亚洲中文字幕久久久一区| 国产一区二区三区无码免费| 亚洲精品无码专区在线| 亚洲一级Av无码毛片久久精品| 亚洲国产成人手机在线观看| 女人张开腿给人桶免费视频| 免费大片av手机看片| 免费人成网站7777视频| 香蕉视频亚洲一级| 国产乱子影视频上线免费观看| sss在线观看免费高清| 亚洲乱码中文字幕手机在线| 国产好大好硬好爽免费不卡| 亚洲色大成网站www| 国产午夜亚洲精品午夜鲁丝片| 一级毛片免费全部播放| 奇米影视亚洲春色| a毛片基地免费全部视频|