本書涵蓋了Ruby on Rails絕大部分的常用功能以及介紹,為了兼顧入門及實戰,本書拆分成兩個部分:Part 1前八章為入門實作,逐步實作一個活動管理系統、Part 2深入剖析各種元件和高階議題。本書期許可以讓有些許經驗的網頁程式設計師,可以在本書中學習Rails之道,將之實際應用在工作之中。 ## 關於作者 張文鈿,網路上的代號為ihower,曾擔任[RubyKaigi 2011](http://rubykaigi.org/2011/en/schedule/details/17M05)、[RubyConf China](http://rubyconfchina.org/)、[OSDC.TW](http://osdc.tw/)、[COSCUP](http://coscup.org/)、[WebConf.TW](http://webconf.tw/)歷屆講者。2006年開始接觸Rails,從此愛上Ruby這個極具豐富樂趣及高生產力的程式語言。他同時也是[Ruby Taiwan](http://ruby.tw/)社群和[RubyConf Taiwan](http://rubyconf.tw/)大會的創辦人。目前為創業學校[ALPHA Camp](https://www.alphacamp.co/)的專職講師。 筆者的部落格[http://ihower.tw](http://ihower.tw/)以及Twitter帳號[@ihower](http://twitter.com/ihower),歡迎追蹤訂閱。 ## 軟體版本 本書使用的Rails版本是4.2,Ruby版本是2.2。本書出版後請參考本書網站以獲得最新相容性修改。 ## 本書網站 你可以在[http://ihower.tw/rails4](http://ihower.tw/rails4)看到本書最新版本以及紙本勘誤。如果你有任何問題,也歡迎來信給我。 ## 本書體例 為了避免讀者混淆指令的使用情境,區分如下: * 錢號`$`開頭的是指命令列下的指令 * 大於`>`開頭的是指在`rails console`主控台下的指令 * 井號`#`是註解說明 * 其他則是程式原始碼 例如在以下的操作中,我們先輸入了rails console進入Rails的主控台,然後輸入`Person.first`和`Person.count`: ![Style screenshot](https://box.kancloud.cn/2015-08-18_55d2dfed0d87b.png) 那麼在本書中,會這樣書寫: ~~~ $ rails console Loading development environment (Rails 4.2.1) > Person.first # <Person id: 1> > Person.count # 1 ~~~ ## 本書對象 本書主要對象為網站程式設計師,比較不適合完全沒有網頁開發經驗的朋友,在學習Rails前,最好對以下知識有基本認識: * 一些程式設計的經驗,例如Java、C#、PHP、Python、Perl、JavaScript * HTML/CSS網頁設計基礎,推薦[Udacity: Intro to HTML and CSS](https://www.udacity.com/course/intro-to-html-and-css--ud304)或[Code School: Front-end Foundations](https://www.codeschool.com/courses/front-end-foundations)教材 * 對網路通訊協定有基礎認識,例如HTTP、DNS等,推薦[Introduction to HTTP](http://www.gotealeaf.com/books/http)和[Web Operations 101: Web Flow](http://player.oreilly.com/videos/0636920031079?toc_id=151543) * 對RDBMS關聯式資料庫和SQL語法有基本了解,推薦[Udacity: Intro to Relational Databases](https://www.udacity.com/course/intro-to-relational-databases--ud197)和[MySQL 超新手入門](http://www.codedata.com.tw/database/mysql-tutorial-getting-started)從第0章至第5章CRUD與資料維護。 * 熟悉指令列操作(CLI: command line interface),Unix-like作業系統為佳,推薦[Treehouse: Console Foundations](http://teamtreehouse.com/library/console-foundations)、[The designer’s guide to the OSX command prompt](http://wiseheartdesign.com/articles/2010/11/12/the-designers-guide-to-the-osx-command-prompt/)和[The Command Line Crash Course](http://cli.learncodethehardway.org/book/)教材。 * Ajax章節會需要用到jQuery(跨瀏覽器的JavaScript函式庫),推薦[CodeSchool: Try jQuery](https://www.codeschool.com/courses/try-jquery)教材。 如果您有PHP/MySQL或ASP、JSP等網頁應用程式開發經驗,相信這些對您應該不陌生。 ## 致謝 本書起初的材料來源,來自於準備中研院自由軟體鑄造場[OSSF](http://www.openfoundry.org/)主辦的Ruby on Rails工作坊課程,在這課程中獲得了教學相長的寶貴經驗,感謝OSSF對於開源軟體和開源社群的支持。本書在撰寫過程也收到非常多台灣和大陸讀者來信勘誤指教,對這本書產生了良性回饋,在此感謝:hSATAC、timloo0710、seekcalm、ETBlue、Michael Wang、liukai、inepalon、Ya-yu Huang、aiasfina、David Chuang、Yu-Yao Chang、yang thomas、inepalon、guan-ting chen、Eric.Xiong、pptpb.tw、saitoTK、le jerry、jeffchen1453、EvenWu、Jasper CAI、dreamy0909、JmeHsieh、逍遥、Mark GK、LiChun、tonytonyjan、Kang-Yu Li、曾小黑、Pomin Chen、jzg、ayaya、Juanito Fatas、紅音也、Vincentzh、idarfan、lixing、jerrycheng、maxz、TaopaiC、Fukuball、klobo、liyq205、EIA ANG、caiguo、良葛格、Lam、Daniel Tsai、Hillman Yang、sdjcw13、Jingqiang、foxzool、danix、Yang Weiqi、周裕波、David Chang、张杰、Sgar Wang、zw963、feynixs、Youhua Wang、韩冰、Silver Chen、Kerby Wang、贵超、everyx Lo、shch、David Huang、士揚、Dars、小強、Daniel Yuen、Kevin Shen、floydsoft、Yuan-Hong Zeng、纪东、浩翔、Cray Kao、Theresa、奕辰、WM、Po-Yu、ZhaoZijie、Sean Chen、克彥、庆冲、Gary Cruise、Lester、yousheng、詩凱、Wei-Luan、Zen David、beta shepherd、佳和、凤祥、odin、ChengYu、Bill Chang、Yuting。 最後,還要特別感謝[gogojimmy](http://gogojimmy.net/)、[雨蒼](http://billy3321.blogspot.tw/)和[Juanito Fatas](http://juanitofatas.com/)協助撰寫了部分內容和潤稿,以及[ALPHA Camp](https://www.alphacamp.co/)第三屆學員Amos、Fung、Reinhard、Calvin、Jimmy、第四屆學員Sky、Kidd、Roy、Peter、John、Asika、Doran、Yang為本書的完成做了最後的衝刺。