Latest

Rails 簡易搜尋功能

如果有長期關注的朋友,會覺得我怎麼現在改寫網站設計和網站工程的內容了。不要懷疑,我目前都在玩Ruby on Rails,所以也會寫相關文章,請大家多多指教。 今日分享功能:從資料庫中搜尋所有含特定字串的項目 Ruby版本:2.1.2 Rails版本:4.1.0 系統:MAC OSX 10.9.4 今天要分享的是一個Rails非常簡單的搜尋功能,比我想像中的簡單了大概一百倍。可能我原本以為要搞到像Google那樣才算是搜尋,但其實可以弄得很簡單。Railcast裡面也有非常詳盡的說明。 前提 1. 安裝Ruby、Rails環境 2. 已建立一個Rails程式,帶有app/views/index.html.erb頁面 3. 有一個model叫做Product,帶有title、description (資料庫中已有數筆資料) 4. 有一個controller包含了index action 搜尋的唯一重點就在於從view回傳一個變數 :search

ruby on rails

Ruby gem 'nested_for' 一次增加多筆資料

今天要分享的是一次多筆增加model資料的方法,使用Ryan Bates的gem "nested_form",適用的情況例如: 1. 購物網站的商家,要為商品一次增加許多商品圖片 2. 待辦事項清單,在清單中要一次增加許多待辦事項 從這裡可以很清楚的看出,如果一次只能新增一張圖片,使用者會超麻煩,也會慢到想殺人;同理,如果待辦事項清單上一次只能增加一個待辦事項,那光讀取頁面的速度,就慢到足以讓人想睡覺了。這時候可以使用nested_form這個gem,在新增附屬的model時可以一次新增許多事項。 示範檔案 我已經做好一個在Heroku上的範例網站,操作時可一邊參考。另外原始碼也在Github上,請一同觀看。 使用方法請看以下說明,這邊假設各位對於nested_attributes還不太熟悉,所以會說明得比較完整一點。 前提 Ruby版本:2.1.2 Rails版本:4.1.0 系統:MAC OSX 10.9.4 準備事項:

ruby on rails

Rails 使用 RSpec 寫測試:入門操作篇

RSpec完整基礎教學(含8部影片) 前一篇提到RSpec在Rails當中的安裝,現在要實際執行一次BDD開發,讓大家了解實際流程為何。開發環境與前一篇相同,因此便不再贅述。 開發規格 每一次的網站開發都需要規劃出規格表,不管是為客戶規劃網站、或是新產品開發,都需要有詳細的規格,整個團隊才能目標相同。以下是這篇文章會完成的一個網站。 1. 使用者能夠在網站上產生文章,文章會包含標題、內容欄位 2. 使用者能夠產生評論,藉以回應文章,評論包含內容欄位 3. 每個文章都會有多個回應 4. 文章底下可以看到該篇文章所有回應 5. 文章的標題、內容不能為空白 6. 回應的內容不可為空白 7. 網站首頁是所有文章列表 好了,我們開出了一個簡單的網站規格,我們來把這個東西寫成RSpec的測試,再根據這些測試的內容來撰寫網站程式碼。 首先,進行以下操作,將rails的應用程式建立起來,以及安裝RSpec。 1. $ rails new rspec_test 2. 修改Gemfile安裝RSpec 3. $ rails

ruby on rails

Rails 使用 RSpec 寫測試:基本說明及安裝篇

RSpec完整基礎教學(含8部影片) 為什麼網站或軟體開發還要額外寫測試?關於這點,在ihower的投影片裡頭已經講得非常詳細了。簡單來說,網站規模大時,如果每個功能都要在瀏覽器上一個一個測試,只會天荒地老而已;另外,軟體或網站未來在擴充功能時,如果已經有完整的測試碼,可以確保在編修時舊功能不受影響。 比起Rails內建的測試,RSpec的測試寫法較貼近日常生活中的英文語句,閱讀起來較無障礙,這篇文章主要是讓大家了解一下RSpec的基本用法,讓大家有個概念,未來在寫Rails時,可以先使用RSpec撰寫測試,再開始撰寫程式。這種撰寫方式又稱為Test Driven Development或Behavior Driven Development。 在Railscasts裡面,Ryan Bates也講到:『開發Rails時,根本不需要開瀏覽器,等你把後端全部撰寫完成,要動到view或前端功能時,再開瀏覽器吧!』希望我也早日能到這個階段...... Ruby版本:2.1.2 Rails版本:4.1.0 系統:MAC OSX 10.9.4 開啟一個新的Rails

Mac 萬用搜尋工具 Alfred 讓雙手再也不用離開鍵盤

聽過一段話讓我印象深刻:『操作電腦的裝置越單純越好,要不就只用滑鼠,要不就只用鍵盤。對插畫家來說,從頭到尾都用一支筆是再方便不過;而對coding的人來說,最好能從頭到尾都只用鍵盤,減少交替使用的麻煩時間。』 Sublime text編輯軟體就是對此觀念的最佳實踐,內建的搜尋功能完全就是一個方便到不行。而這個使用習慣,只要在Mac環境底下安裝Alfred這套軟體,就可以徹底延伸到平日使用電腦的習慣當中。 安裝方式 基本功能 只要按下鍵盤上的alt + 空白鍵,就會出現以下搜尋框 這個輸入框可以進行三種搜尋: 1. 搜尋電腦內的應用程式 2. 加上file或open當開頭,搜尋電腦內特定檔案 3. 搜尋google或wikipedia Google搜尋就不用多加說明,在這個強烈依賴搜尋的時代,這個功能一定是最常使用的。而在搜尋應用程式和檔案的部分,例如我輸入一個e,就會出現以下電腦內有的應用程式。 不用輸入完整,只要按下enter,就等於選擇第一個結果。 進階功能 除了基本搜尋之外,有幾個功能我覺得也相當實用的: 1. 查字典 預設只要在搜尋前方加上define

ruby on rails

Ruby gem 'jbuilder' 快速產生json物件

在Rails當中,有時必須使用產生json格式回應,例如小弟目前正參與的專案就是搭配前端的Angular JS,專吃json,因此Rails從ActiveRecord抓資料出來回應給前端時,就必須包裝成json格式。 由於有些json格式規模很大,需要自訂的欄位也非常多,Rails內建的json功能不敷使用,因此使用jbuilder這個Ruby gem,可以快速產生一個自訂的json,撰寫的格式也簡單明瞭。 RailsCast上也有非常詳盡的影片說明。 Rails內建產生json物件的方法 在Rails當中已有自行產生json的方法,第一種是最簡單的,直接在頁面上產生json物件: def index @posts = Post.all render json: @posts end #只送出每一個post的title def only_title @posts = Post.all render json: @posts, :only => :title end 另外一種是用respond_to的方法來產生: def index @pos

ruby on rails

Rails遇上問題,該如何搜尋及發問?

遇到困難了!思索半天也找不到答案該怎麼辦?腦袋打結時,最好直接用搜尋和發問的方式,從外部取得解答最快速。尤其Ruby on Rails的開發對新手來講充滿許多陌生的知識,有些從PHP或Java轉過來的老手也不一定能在第一時間就抓到要領。 像本人過去只學過javaScript、HTML、CSS,對伺服器端執行的語言完全不熟,剛開始學時,根本就是人間煉獄......在這邊提供一些個人經驗,希望從頭開始學習Rails的朋友在遇到困難時,都能夠快速尋找到答案喔! 搜尋技巧 有一件事情務必要說明,那就是在Ruby on Rails的世界裡,目前英文的資源是遠比中文豐富的,也就是說不管是搜尋還是發問,用英文能找到的答案,絕對比用中文來找答案要來的快速、答案也更多。 當然程式語言本身是英文的也佔了很大一個原因,不過跟C、Java、Objective C等語言相比,中文的資源還是相對很少。如果你的英文不佳,在閱讀文件、聽課時,務必把常用的關鍵字都記得,因為只要關鍵字都記得,搜尋時就能加快非常多速度。 舉一個簡單的Google例子: 如果今天遇到我要在Ruby當中把物件(object)或雜

ruby on rails

Ruby on Rails 安裝教學彙整&心得

對想要學習WEB開發的人來說,Ruby on Rails已經不是很陌生的技術,到Inside求職頁上四處可見徵求Rails工程師的工作,到處都有學習資源,只要在Google上搜尋 Ruby on Rails不管中英文都有非常多可以參考的資料。 教學資源 不過對於想要學習的新手來說,安裝Ruby on Rails的開發環境並不是一件簡單的事。這邊幫大家彙整幾個很常見的資源: Ruby官方網站 ihower的Ruby on Rails實戰聖經 RailsBridge Docs Treehouse (Mac) Treehouse (Windows) Rails 101 注意,雖然以上資源都可以利用,但大家都知道在程式語言的領域都需要一點運氣,如果在某一種安裝方法中卡關了,請參考其他資源看看有沒有其他方法。再怎麼鳥的狀況都會有解法,本人安裝Ruby裝了兩天才裝起來,VM拆了又裝、裝了又拆,相信大家只要有點耐性,不會比我來得更慘。 快速安裝方法 Mac 由於本人在Mac上安裝Ruby經驗最豐富,因此以下提供在Mac上安裝最簡單的方法,假如平常都有做善事,基本上

ruby on rails

Ruby on Rails從零開始自學,要用哪一份教材呢?

近年RoR開始走紅,有非常多教學資源可以利用,本人也是先前某天靈光一閃,開始自學的旅途。不過網路上這麼多教學資源,到底應該從哪一個教材上手呢?這個問題就非常見仁見智了。 必備條件 ●知道HTML網頁和CSS長什麼樣 ●知道JavaScript的運作邏輯 有發現為何我不直接寫『會HTML、JavaScript』嗎?因為在寫Rails時,唯一需要動手寫的只有HTML,Javascript和CSS不會沒關係。不過,就像跑鐵人三項一樣,寫Rails寫得很好,代表你騎腳踏車騎得很棒;不會JavaScript就彷彿不會游泳一樣,平常不游沒關係,等真的要下水比賽的時候就知道有多麻煩了。所以...遲早還是要學啦! 以下介紹幾個我參考的教材,你可能會覺得『騙笑ㄟ你最好是這些教材全部都從頭到尾看過!』不好意思,本人資質駑頓,不管哪一個教材都有卡關,而且是卡到比內褲卡屁縫還更緊的那種,只能先換教材從頭看起;經過無數次撞牆和重看之後,才偶爾有靈光一閃,突破難關。所以,以下絕對都是我讀過的心得,沒讀過的我就不放進來了。 Ruby基礎 Code Academy 評:按部就班學 互動式學

做Rails開發少不了GIT

為什麼需要GIT? GIT是一種版本控制系統,為什麼要有這種東西呢?每一個東西都是用來解決一個問題,而在ihower的解說當中,點出程式開發團隊會遇到的問題: * 檔案被別人或自己覆蓋,甚至遺失 * 想復原前幾天寫的版本 * 想知道跟昨天寫的差在哪裡 * 是誰改了這段程式碼,為什麼 * 軟體發行,需要分成維護版跟開發版 (引用自ihower) 雖然ihower說的是團隊開發,但就算是一個人開發,也會在寫程式的過程中少不了各種以下情況: 1. A功能開發完成,結果寫B功能寫到一半把A功能搞壞了 2. 檔案不小心刪了 3. 寫到一半本機硬碟壞了 聽起來很悲情,但在本人身上也確實發生過不少次。因此就單純已備份的角度來看,版本控制就像從前在學校寫報告要定時存檔一樣,基本上是做Rails開發,甚至是所有程式設計人員都要學會的。 GIT是利用儲存庫(Repository,簡稱repo)進行儲存,而利用repo,我們不只能進行各種儲存、備份、版本控制,更有專門提供這些公開repo的網站(例如Github),讓我們這些程式開發人員可以去觀摩別人的作品、copy、修改

Ruby gem 想要一機裝多個版本?RVM來幫你!

『Rails 4.2.0.beta出了!好想試試!』 在前幾天看到Rails 4.2.0 release note時,大家是否都有相同的想法?尤其看到現在debug console改為內建,真的很想知道他內建的console長什麼樣! But現在Rails 4.2.0還在beta版,有許多bug需要更新,所以不適合裝在我們正在開發專案的本機上。這次使用的解決方案是使用RVM同時安裝多版本gem。 安裝RVM 各位在安裝Ruby環境的時候,應該都有安裝類似RVM的版本控制程式,例如rbenv等等,如果你是用硬幹的方式裝Ruby,沒辦法切換版本,那請一樣先裝rvm,才有辦法在本機同時安裝多套ruby和rails版本。在終端機中執行: $ \curl -sSL https://get.rvm.io | bash -s stable 安裝完成以後,請確定使用的是穩定版本的ruby,可先到Ruby官網上進行查詢,假如查到的Ruby 2.1.3,那就執行安裝並切換: $ rvm

Ruby code整理系列 if...else

儘管Ruby on Rails的程式碼已經非常精簡,但對新手來說還是會有很多邏輯上的問題,導致寫出很長的程式碼。許多專家針對此提出整理的方法,refactor代表『重新架構』,讓整體程式看起來更乾淨俐落。 『重新架構』的目的並不是要把code縮減到越少越好,而是要讓所有code各司其職,符合物件導向(object-oriented),也符合Rails的邏輯。Ryan Bigg講過一句話:『不要因為程式碼太長而去refactor,因為當程式規模很大的時候,程式碼很長是必然的。』 本篇先從最簡單的Ruby語法談起,簡單利用if...else說明幾個可以讓程式碼縮減的方法: 將if放在後方 如果今天的程式碼是: if a > 10 puts 'big' end 那我們可以將if放到第一行,省去end,變成: puts 'big' if a > 10 這是最簡單的縮減方法,讀起來很像口語英文,很爽 將if...else寫在同一行