Rails 重玩筆記 (1)


以下三種方法,基本上都是一樣

1
2
3
4
5
6
7
8
# 依據條件,找出第一筆資料,這指定了條件為 where mid = "id"
@message = Message.find(:first, :conditions => {:mid => params[:id]})

# 這和上面也一樣,不過直接函叫了 first 這方法
@message = Message.first(:conditions => {:mid => params[:id]})

# 這直接指定 id 的值,因為Rails預設表的主鍵為 id, 而以可省略寫成下面方式
@message = Message.find(params[:id])

經過上面提到因為預設主鍵名為 id,那如果表中的主鍵不是 id 那怎算呢? 方法大約就是如下
(注: 主鍵 = Primary Key)

1
2
3
class [Model] < ActiveRecord::Base
self.primary_key = "主鍵名"
end

另外還有關於 Routes 這東西的一些小記, 在輸入 http://localhost:3000 後會看見的是 index.html
那如果想一開始就進入指定的控制器(Controller)?只要修改 config/routes.rb

1
2
# 將前面的 "#" 拿掉,之後指定一開始要顯示的控制器
map.root :controller => "gbook"

另外關於 REST 的一些小記,要支援這個也是修改同一檔案

1
2
# 也是將前面的 "#" 拿掉,之後再改為你要的控制器 (簡單指定)
map.resources :gbook

再來指定後, 就會產生對應 Routes 的 Action 給 Controller,而最方便的更是是自動產生了一些 Helpers 給 Views
如何查看這些東西呢,可以通過這個方法

1
2
3
4
5
6
7
8
9
10
11
1. 進入指令模式 (cmd)
2. 之後切換到 App 所在的目錄
3. 輸入 rake routes
4. 就會看見一整個表出現,格式就是
------------------------------------------------------
helpers || HTTP || Verb || 產生的Path || 對應的Action
------------------------------------------------------
5. 之後再在 helpers 後加上 _url or _path 或者傳入 id 的參數
<<Agile Web Development with Rails.3rd Edition>>
- 提到 enabling you to use helper functions such as "articles_url"
- 換言之應該用 _url ?

例子圖片:
rails_routes