ruby on rails

Ruby gem 'Carrierwave' 上傳檔案神器的簡易安裝與使用

Ruby版本:2.1.2 Rails版本:4.1.0 開發環境:MAC OSX 10.9.4 Carrierwave是Rails應用程式裏面上傳檔案的簡單工具,上傳的檔案種類不限,在這邊跟大家分享一下安裝與使用carrierwave的方法,主要針對圖片的上傳和簡易編修。主要是從Railscasts學來的,請各位多指教。 以下已經預先完成的項目: 1. 已經建立了一個rails的應用程式 2. 擁有一個product model,底下有title和description兩個項目 3. 已經有基本的products CRUD Controller及view 進入正題: 1. 設定及安裝 首先打開Gemfile,輸入 gem 'carrierwave' gem 'rmagick' 備註1:在安裝rmagick的時候要確認有安裝ImageMagick,若無,則先進行安裝。 備註2:安裝ImageMagick需要使用Homebrew,

ruby on rails

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

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

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 評:按部就班學 互動式學

ruby on rails

Rails code 整理系列 - Service Object 初探

Rails在设计上有太多可以自行调整的风格,这也是为什么在高阶开发者之间有许多争议和讨论,例如今年 在RailsConf引爆的『TDD已死』就是一个很好的例子,没有对错,只有风格。 而在Rails结构上也有许多可以调整的地方,例如常听到的『skinny controller、fat model』就是一例,认为所谓controller就是掌管各种『行为』(action),而不去干涉前端(view)的设计,也不去牵扯太多跟数据库(model)有关的计算。 Fat model就是将各种跟计算、储存有关的事情都交给model来处理,就这样的逻辑来分配,对开发者来说比较容易理解。 但照这样逻辑来推算,如果把所有东西都交给model,在逻辑、各种计算不分类的情况下,整个code也会变得相当混乱。 经典文章『7 Patterns to Refactor Fat ActiveRecord Models』便提到利用七种方法让过度拥挤的model可以有喘息的地方 ,解决这个整理上的困扰。 而本篇则分享其中一个Service Object的使用方法。 1. 为何要使用Service Objec

ruby on rails

Rails新手易混淆的變數使用

對Rails新手來說,常常碰到各種莫名其妙的變數型態,而且只要閱讀高階開發者的程式碼,超容易被各種符號搞得暈頭轉向。本篇簡單介紹各種在新手接觸Rails時會碰到的變數型態,以及分別代表什麼意義。 local variable 區域變數 這沒什麼好說的,就只是一般的變數,如果是從其他語言跳來的朋友,記得Ruby的local variable並不需要先宣告才能使用。不過在呼叫時,如果是完全沒有提及過的變數,就會產生錯誤。例如: number = 10 number # => 10 所以在Ruby當中,使用變數前並不用先宣告。唯一需要注意的是在進行數值比較或變數指定變數時,也就是在『使用』時,必須要先宣告: a = b # => NameError: undefined local variable "b" if a == b a = 10 end # => NameError: undefined local

ruby on rails

常見 block 說明和應用:do, map, collect

each & do block基礎 在剛開始接觸Ruby或Rails時,一定對於block感到很困惑(至少筆者是這樣認為啦...),假如又傻傻用scaffold架起一個Rails專案,更是看不懂裡面在幹嘛。以下是常見的Ruby block用法: result = 0 array = [2,3,4,5,6] array.each do |value| result = result + value end result # => 20 1. 從do到end中間算是一個block。 2. each 方法讓數列(array)中每個值都執行一次該block。 3. |value|代表數列裡的變數。value變數在此不可省略,因為代表著數列中的每一個數值。當然,那只是個變數,你要叫他a或b也可以。 由此可知,上頭的each block實際上執行的內容為: # 由於array數列中有五個值,因此總共會執行五次,