国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

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

            不再象java中的諸如:
             Integer.parseInt()
            String.valueOf()
            那樣難看與及難以理解
            Time.now.strftime(fmt) Time.now對象通過strftime格式化日期類型
      再如koalant在它那本ruby on rails實踐中說到   -166.abs 可以直接取其-166絕對值
             ………………
    2、代碼塊非強制用{} ,無需 ;  作分行標(biāo)識;
    3、語法靈活,一種可以功能可多種實現(xiàn),隨個人愛好;
    4、語法簡潔等,做一個應(yīng)用只要用到幾行代碼,這也是腳本語言的優(yōu)勢所在
            
            更詳細可參考 http://www.ruby-lang.org/ 以及下面提供的些文檔資料.
           
    [什么是Rails ?]
            RAILS是用RUBY開發(fā)的一個web框架.
            實現(xiàn)一站式開發(fā).        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
            聲稱用更少的代碼實現(xiàn)web applications。
            此框架主要包括三部分
            Active Record  一個ORM實現(xiàn)
            Action Pack      View 以及controller
            Action Mailer    應(yīng)該是關(guān)于mail方面的東西


    [一些資料]
    [1] koalant寫的Ruby on Rails實踐  ,通俗易懂,介紹了ruby on onrails中的一些基礎(chǔ)的東東
    [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進行命令行窗口,通過網(wǎng)絡(luò)進行遠程安裝 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

          說明如果發(fā)現(xiàn)gem,rails命令等用不了,可能是環(huán)境變量未設(shè)置好,
          可自行設(shè)置指向你的 安裝目錄/bin
          
      4、運行服務(wù)器
            
    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、 學(xué)習(xí)一個Ruby的語法
         ruby  以rb為后綴的文件. 
    hello.rb
    @a = "hello world!"
    puts @a

    C:\ruby\bin>ruby hello.rb
    hello world!
    其它可參考語言書學(xué)習(xí).
  • 我的訂餐系統(tǒng)

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

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



[頁面結(jié)構(gòu)如下所示]


  • 員工管理
    1、快速開發(fā),自動生成基本文件結(jié)構(gòu)目錄及文件
          執(zhí)行命令,自動生成項目所需要的文件及其文件結(jié)構(gòu),幾秒種架設(shè)好訂餐系統(tǒng)框架!!!
          
    C:\myrails>rails c:\myMealOrder

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

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


              打開IE 瀏覽 :http://127.0.0.1:3000
             看到Congratulations, you‘ve put Ruby on Rails!表示配置成功
  
3、建立數(shù)據(jù)庫以及進行配置
    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`)
  )      
    說明,習(xí)慣約定,默認情況下主鍵名為id,表名為復(fù)數(shù)形式,具體操作我也有點糊涂,
    例如本例子中的human model對應(yīng)其數(shù)據(jù)表名為humen。這里我就略過了。具體資料可參考更詳細的資料。
    配置,打開 C:/myMealOrder/config/database.yml
    將其中參數(shù)設(shè)置正常就行了。
    例如將 database: rails_development 設(shè)成你的數(shù)據(jù)名等

  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、快速實現(xiàn)CURD
    打開app/controllers/human_controller.rb文件,修改為

   class HumanController < ApplicationController
          scaffold :human
  end


  說明: 簡單的一句 "scaffold :human" 就能對應(yīng)生成human 的CURD操作及其頁面。
  重啟服務(wù),再次瀏覽   http://127.0.0.1:3000/human
   action包括:
   list(列表,列出所有human),new(新建human),show(顯示human),update(更新human),Destroy(物理刪除human),界面如下圖


   我們可以注意其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、瀏覽器發(fā)出請求;
   2、后臺尋找(new/show/edit/destroy/etc) controller,調(diào)用相對應(yīng)的方法,及view模板;
   3、將結(jié)果返回給瀏覽者
   或許你會認為,這一默認的view大多數(shù)情況下并不適合,或許需要自己設(shè)計view模板,也行,rails提供快捷的方法
   方便用戶自己設(shè)計view模板,只要定義action并將同名view文件(rhtml后綴的文件)放到其webapp/app/views/目錄即可,
   下面將會介紹到相關(guān)的操作。
   

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

    1、自己設(shè)計view 模板
          例如在餐廳列表中我要實現(xiàn)自己的樣式,如下圖:

         具體操作, 新增加 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 語法,循環(huán)所有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 語法,循環(huán)所有shop
    <% end %>

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

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

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

          [2] 修改model文件,具體語法可參見相關(guān)的參考書本.這里就略過了
    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 我們要實現(xiàn)form中的控件提交后自動綁定到object要借用到beanUtil并自己作N多擴展.
    rails中提供了快捷的方法,自要你按要求定義好控件名就能幫自己綁定.
    例如上面的 good[shop_id] 或  good[id] ,good[name] 等等
  • 訂單管理
    1、order及item關(guān)聯(lián)操作
                    @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設(shè)為0
    另外再增加相應(yīng)的item.關(guān)于這方面的正確用法還有待研究:)
  • 其它代碼簡單介紹
     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、 跳轉(zhuǎn)頁面
        
    redirect_to(:action => edit)


     4、session應(yīng)用
       
    session[:good] ||= Good.find(params[:id]) 
  • 問題
    記錄下在開發(fā)過程中遇到的問題
    1、沒相應(yīng)的工具支持,操作起來還是比較麻煩的,雖然代碼量很少
    2、并不是很健壯,發(fā)現(xiàn)挺容易出錯,而且出錯信息也不全
    3、性能還有待增強,(筆者一邊聽歌一邊開發(fā),發(fā)現(xiàn)在運行程序時,不時會影響我的wmplayer播放)
  • 思考與總結(jié)
    本文并非建議大家使用ruby on rails,因為在應(yīng)用過程中畢竟發(fā)現(xiàn)不少的問題.
    然而我們能學(xué)習(xí)些什么呢??
    [1] 工具支持 
    [2] 習(xí)慣優(yōu)于配置
    [3] 一站式的開發(fā)
    [4] 更少的代碼
    我想在那么大的java 開源社區(qū)中實現(xiàn)一站式的開發(fā)還是不現(xiàn)實的.
    筆者在想是否能有一個開源項目或者是落實到一個公司的技術(shù)框架中能實現(xiàn)到這幾點,那樣就可以從繁雜的配置以及少了為找N多個開源包或版本的問題而煩惱,而能專心于需求的確認及相關(guān)的業(yè)務(wù)邏輯的改進等等  : )   (完)
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Rails ---> routes.rb 詳解
EasyTime - Ruby學(xué)習(xí)筆記 | Agile Web Development with Rails 翻譯(十四)
Ruby on Rails 學(xué)習(xí)資料
〈轉(zhuǎn)〉重構(gòu)臃腫 ActiveRecord 模型的 7 種方式 [翻譯] · Ruby China
rails入門書籍
NetBeans IDE Ruby 快速入門教程
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服