Rails 101 快記

以下用的都是 rails 3,請注意,這些資料都是筆記,請購買 xdite 的書籍取得詳盡說明

安裝 rails

rails_install.sh:

#!/bin/sh
gem install rails
gem install mysql2
gem install passenger
gem install nokogiri
gem install capistrano
gem install capistrano-ext
gem install delayed_job
gem install hoptoad_notifier
gem install facebooker2
gem install factory_girl
gem install sphinx

Hello, world!

  1. rails 第一個畫面:

    $ rails new forum_demo
    $ cd forum_demo
    $ bundle check
    $ bundle install
    $ rails s

然後直接 access http://0.0.0.0:3000 就可以看到預設畫面

  1. rails hello, world(另開一個 shell 到 forum_demo 裡):

    $ rails g controller pages

在 app/controllers/pages_controller.rb class 裡面加上個 method(步驟-建 controller)

def welcome
end

然後在 app/views/pages/ 增加 welcome.erb 裡面填入(步驟-改 view):

Hello, world!

然後在 config/route.rb 改掉 root :to 這串成以下(步驟-改 route):

root :to => "pages#welcome"

然後砍掉內建的 public/index.html (有這個檔,就會直接讀取 index.html,所以要砍掉)

這樣重新查看 http://0.0.0.0:3000 就會出現 Hello, world! 畫面。

forum_demo project

不講太多,大家就直接買書看,所以以下真的是胡亂筆記:

$ cd forum_demo
$ rails g scaffold board name:string
$ rails g scaffold post title:string content:text
$ rake db:migrate

此時就可以 access http://0.0.0.0:3000/boards 以及 http://0.0.0.0:3000/posts 操作 CRUD

  1. 更改 url 到 http://0.0.0.0:3000/board/1/post/2 格式

在 board model 增加:

has_many :posts

在 post model 增加:

belongs_to :board

(請注意單複數)

migrate:

$ rails g migration add_board_id_to_post

然後在產生的檔案的 method 各別加入:

add_column :posts, :board_id, :integer

以及:

remove_column :posts, :board_id

然後執行一次:

$ rake db:migrate

然後就進入 controller 修改,此時的 tip 為:

1. 使用 board_posts_path(@board,@post) 就找到 url 要連到哪裡

2. 在 route 使用以下達到巢狀 url
    resources :boards do
        resources :posts
    end

3. 使用 board.posts.build 取代 Post.new

4.  使用 before_filter :find_board 然後建一個 protected find_board 的 method,節省一直重複寫相同的 code
    進階使用:before_filter :find_board, :only => [:index, :show]
              before_filter :find_board, :except => [:new, :create]
  1. 加入使用者機制:使用 devise
  2. 加入 admin 機制
  3. 分頁機制:counter_cache 快取,will_paginate 分頁
  4. 上傳附件:paperclip
  5. deploy:使用 Capistrano

內容目錄

上一個主題

FreeBSD 裝 redmine 1.2

下一個主題

Lua

本頁