Getting
Started with Rails
用Ruby on Rails純手工打造一個具從屬關係的[討論區]
(2)
我們很有耐心的把一個討論區的雛型建構出來了,但是這個討論區的程式碼其實可以再有效率的精簡,這個章節要討論的就是重構,讓重複的程式碼簡化,程式設計師的時間很寶貴的不要做相同的事。
1. 重構
建構完成一個功能重新檢視會發現重複性質的部分其實滿多的,而且我們的城市可以再精簡一點,一方面變得好看一點、也可以變得好維護一些,當然慢慢的形成精簡化的思考模式後,將來會很直覺的以模組化的方式來開發系統了。
首先利用的就是render方法。
下面的語法指的是在檔案中,調用與原view路徑相同的_form.html.erb檔案。
<%= render ‘form’ %>
|
舉例來說,如果在 /views/posts/ 資料夾中有edit.html.erb與 _PostList.html.erb兩個檔案,在edit.html.erb中要調用_PostList.html.erb做法如下。
<%= render ‘PostListb’ %>
|
好了,說明完後,接下來就可以實作了。
1.
檢視/views/posts/new.html.erb
與 /views/posts/edit.html.erb
原/views/posts/new.html.erb檔案內容為:
原/views/posts/edit.html.erb檔案內容為:
可以發現/views/posts/new.html.erb檔案內容第3~8行與/views/posts/edit.html.erb檔案內容第3~15行作用相同,所以我們將相同部分獨立出來製作成一個新的檔案_ePostList.html.erb
2.
修改/views/posts/new.html.erb
3.
修改/views/posts/edit.html.erb
您會發現,除了ePostList之外,我們還做了一個error的render,這個部分容我在下個段落再說明。
透過網頁測試剛剛做的修改功能是否正常,發覺editing
post在修改後會丟出錯誤頁。
所以我們追著錯誤訊息打開/controllers/posts_controller.rb
$vi /controllers/posts_controller.rb
|
第30行修改為
錯誤頁就消失了,但是一直無法修改成功,原因不明,這時候<%= render ‘error’ %>就派上用場了。
2. 建立欄位檢核機制
錯誤頁的檢核需搭配model內的設定,以這邊的例子必須先在model/posts.rb設定檢查條件
4.
修改/models/post.rb
5.
新增/views/posts/_error.html.erb
完成後,如果新增或修改發生檢核錯誤訊息,就可以在頁面上show出來了。
留言
張貼留言