深入淺出 RoR (4-1) - 打造你第一個 Rails Project

posted 31 Oct 2008

這一章我們使用了 Blog 作為示範。一個 Blog 會有 Post、Post 會有 Comment。

在這之前,我們先簡介怎麼生成一個簡單的 project。

    rails new [project name] 

會在你現在的工作目錄下產生 rails project 需要產生的檔案。

rails s (運行 development 模式,預設開在 port 3000。)

PIC

此時打開你的瀏覽器,可以看到預設的 Rails 畫面。( 此時的歡迎畫面檔案,是 public/index.html )

PIC

那麼如何將歡迎畫面,改成我們所需要指定的頁面甚至是指定的 Controller 呢?

先前提到這一章的主旨是建立一個 Blog,那麼我們就先從建立 Blog controller 開始。

    rails g controller [controller_name]

PIC

rails 的 route 規則是由 config/routes.rb 控制,要讓主頁面改指到 Blogs 下,我們需要將 root 指定為 blogs。

     root :to => "blogs#index"

當然,別忘記把 public/index.html 砍掉。

打開 config/database.yml,設定一下 databae。( 我個人偏好 mysql,在此以 mysql 作為示範。需注意的是 mysql socket 位置隨作業系統不同,如果是 BSD / MacOS,socket 多半在 /tmp/mysql.sock、Linux 多半在 /var/run/mysqld/mysqld.sock。)

     development: 
        timeout: 5000
        adapter: mysql2
        database: blog_project_dev
        username: root 
        password: "123456"
        host: localhost
        encoding: utf8

再次打開 http://localhost:3000。woops..!!

PIC

看起來我們忘記定義在 Blogs 裡定義 index 這個 action 了。(預設會尋找 index 這個 action,並執行動作)

PIC

PIC

再打開瀏覽器,woops..!! 看起來定義了 index 這個 action 還不夠,還需要填入 index 需要的 view。

PIC

OK,現在終於可以成功的看到了畫面。

PIC


也許你會好奇 views 的 layouts 資料夾的作用。

PIC

這裡說明一下,其實 layouts 的作用是全域 Template。 application.html.erb 是全站的 view template, blogs.html.erb 就是 針對 Blogs 這個 controller 的 view template。一般而言,所有的 controller 都是套用 application.html.erb,但是若有針對 controller 的 view template 存在的話 (例如 blogs.html.erb),則會 load 該 template。

PIC

一般而言,創立一個 project 之後,都會手動先作一個 application.html.erb。

PIC

blog comments powered by Disqus