準備工作
我打算從以前的帖子 Rails and Database Migrations 結束的地方開始。另外,您可以在 BlogDemo.zip 的基礎上開始本文的操作,此壓縮文件包含了那個帖子中完成的項目。
測試 BlogDemo 項目
- 打開 BlogDemo 項目。
- 運行項目並瀏覽 http://localhost:3000/blog 以驗證其是否正常運行。
創建評論模型
1. 切換回 Projects 選項卡,右鍵單擊 Models 文件夾並生成一個名爲 Comment 的新模型。
- 打開 003_create_comments.rb 並將 post_id, created_at 和 comment 列添加到上面,方法如下:
- 右鍵單擊 BlogDemo 項目並選擇 Migrate Database > To Current Version
定義模型關係
- 將 has_many 關聯關係添加到 post.rb:
- 將 belongs_to 關聯關係添加到 comment.rb:
重新生成我們的控制器框架(scaffolding)
在我們第一次創建此項目和生成 Post 模型的框架時,我們沒有選擇覆蓋現有的博客控制器,所以沒有創建框架操作。這樣,我們可以自定義框架操作,我們將刪除 blog_controller.rb 並再次生成框架。注意:不要使用覆蓋選項,因爲已經自定義了視圖,而且不希望放棄這些自定義:
1. 刪除 blog_controller.rb
- 生成 Scaffold(框架)。將 Model Name 設置爲 Post,Controller Name 設置爲 Blog。
- 打開最新創建的 blog_controller.rb,它現在擁有所有框架操作(索引、列表、顯示、新建、創建、編輯、更新和破壞)。
新建發表評論操作
我們將要修改顯示視圖,以使其包括可以添加評論的文本區。首先,我們將爲發表評論新建一個操作。
- 修改顯示操作,以便將帖子 id 保存到 flash:
- 創建下一個 post_comment 操作:
修改要發表評論的視圖
- 打開 show.rhtml 並在底部添加下列內容:
測試
- 在瀏覽器中,單擊 Permalinks 之一,查看一個條目的詳細資料。測試添加評論:
顯示評論
我們的博客還未顯示我們所添加的評論,現在我們來修復此問題。
- 將 post_comments 實例變量添加到顯示操作,以收集評論:
- 將下列內容添加到 show.rhtml 以顯示評論。和
Comments
已經存在,其放置的位置可供參考:
測試
- 添加另一個評論: