October 9, 2009
鼓勵此網誌:0
很亂的紀錄 ... 看到什麼就隨手記下來 ...
基本架設
1. 下載並安裝 WLMP。(安裝程式是匈牙利文,一直按「下一步」)
2. 安裝完成後,選「否」,之後重新開機。
3. 重開機後會出現是否啟動 Lighttpd 及 MySQL,選「是」。
4. 進入 http://127.0.0.1,選左側的 PHPMYADMIN,登入的帳號為 root 密碼不用填。
5. 選擇「權限」,更改 127.0.0.1 以及 localhost 以 root 登入的密碼。
6. 下載並安裝 Ruby (One-Click Installer)。
7. 安裝完成後,開啟「命令提示字元」,輸入 ruby -v 可以看到目前版本。
8. 安裝 Rails 框架,這部分比較有問題,在 ruby 安裝完之後舊版本的 gem
在 win 上會有問題,因此要先把 gem 升級成最新的。
9. 輸入 gem update --system 更新 gem 到最新版。
10. 完成後,安裝 Rails 框架,輸入 gem install rails
11. 完成後,輸入 rails -v 可以看到升級成最新的版本了。
12. 安裝 Mongrel 套件,輸入 gem install mongrel
13. 安裝 Mongrel_Service 套件,輸入 gem install mongrel_service
14. 設定 Lighttpd 伺服器。編輯 C:\WLMP\LightTPD\conf\lighttpd-inc.conf,
將「mod_accesslog、mod_alias、mod_auth、mod_proxy、mod_redirect、mod_rewrite」
移除註解(#)
快速開發一個專案(一)
1. 建立專案資料夾 rails -d mysql C:\ror\www (-d 是使用什麼 database,最後面是專案目錄),
c:\ror\www\app 中包含了 controllers, helpers, models, views
2. 把 mongrel service 安裝成 windows 服務。(此步驟可以用 netbeans or 每次自己下指令)
mongrel_rails service::install -N Mongrel -c C:\ror\www -p 81 -e production
-N 服務名稱,-c 專案目錄,-p 使用的 port,
-e 使用環境有 test (測試)、development (開發)、production (產品)
3. 設定完成後,到我的電腦按滑鼠右鍵 -> 服務 -> 裡面可以找到剛剛註冊的服務,可設定成自動。
4. 如果不用上面的方式啟動的話,可以到專案目錄下輸入
mongrel_rails start -e production -p 81 也一樣可以啟動。
5. 開啟瀏覽器輸入 http://localhost:81/ 出現 Welcome aboard 的視窗表示啟動成功。
6. 設定資料庫連線,編輯 C:\ror\www\config\database.yml,
有剛剛提到的三種環境 test, development, production,
這邊我們只啟動 production 就設定 production: 的部分,
要注意屬性+冒號後面要空一格才輸入值,ex. password: 空一格 12345。
7. 建立 mysql 的 new schema。要跟上面設定的一樣。
8. 建立 controller,在專案目錄下,輸入
ruby script/generate controller helloworld index,rails 會自動建立相關檔案。
9. 編輯 c:\ror\www\app\controllers\helloworld_controller.rb
| def index render :text => "歡迎光臨ROR" end |
10. 重啟 mongrel,用瀏覽器開啟 http://localhost:81/helloworld
11. 這裡要注意的是 helloworld_controller.rb 跟 index.html.erb 都要另存成 utf-8 編碼。
否則正體中文會有亂碼問題。
12. 建立 controller say,輸入 ruby script/generate controller Say。
13. 編輯 c:\ror\www\app\controllers\say_controller.rb
| class SayController < ApplicationController def hello // 定義 hello 方法 @time = Time.new // 取得目前時間,存在實體變數 @time 中 end def goodbye // 定義 goodbye 方法 end end |
14.
| http://xx.xx.xx.xx/say/hello say => class SayController < ApplicationController hello => def hello @time = Time.now end end |
15. 編輯 views,在 C:\ror\www\app\views\say 目錄下新增剛剛兩個方法的頁面
hello.rhtml, goodbye.rhtml (注意編碼)
16. hello.rhtml
| <html> <head> <title>Hello Rails!</title> </head> <body> <H1>現在時間 <%= @time%></H1> <p> Time to say <%= link_to "再見", :action=> "goodbye" %> </p> </body> </html> |
17. goodbye.rhtml
| <html> <head> <title>再見</title> </head> <body> <p> nice to meet you ... </p> <p> <%= link_to "Hello頁面", :action => "hello" %> </p> </body> </html> |
1. 一對一關連:cards(id, name_id ...), name(id, name ...)
class Card < ActiveRecord::Base
belongs_to :name
end
class Name < ActiveRecord::Base
has_one :cards
end
2. 一對多關連:line_items(id, order_id ...), orders(id, name ...)
class LineItem < ActiveRecord::Base
belongs_to :order
end
class Order < ActiveRecord::Base
has_many :line_items
end
3. 多對多關連:books(id, name ...), books_users(book_id, user_id), users(id, name ...)
class Book < ActiveRecord::Base
has_and_belongs_to_many :users
end
class User < ActiveRecord::Base
has_and_belongs_to_many :books
end
分頁
http://wiki.rubyonrails.org/howtos/pagination
分頁
如果要在 index 分頁
1. 修改 controller - people_controller.rb
| def index @people= Person.paginate :per_page => 2, :page => params[:page], :order => 'name asc' end |
2. 修改 view - index.html.erb
| <h1>Listing people</h1> <ol> <% @people.each do |person| %> <li><%=h person.country%> | <%=h person.city%> | <%=h person.name%></li> <% end %> </ol> <br /> <%= will_paginate @person, {:prev_label => '上一頁', :next_label => '下一頁'} %> |
3.
Reference from
Ruby on Rails, 松崗, 歐展嘉。
Upgrade to Rails 2.0.2
JavaWorld@TW Java論壇
Pagination with WillPaginate



