Web開發敏捷之道Rails(筆記四)

2021-08-25 01:50:11 字數 1443 閱讀 1436

1:session 用法

應用程式將瀏覽器傳送的請求與本地儲存的session資料進行匹配。cookie來實現session。

cookie是指web應用傳遞給瀏覽器的一組資料,瀏覽器會將cookie儲存在本地計算機上,當瀏覽器向web應用傳送請求時,會根據cookie資料的資訊將這一請求與伺服器儲存的session資訊匹配。

rails中,有乙個類似於hash的集合,名為session。在處理請求的過程中,如果將乙個名/值儲存在這個hash中,那麼在處理同乙個瀏覽器發出的後續請求時都可以獲取到該名/值對。

建立乙個資料遷移任務來定義session資料表

rake db:sessions:create

實施這個遷移任務,就可以把資料庫表建立出來

rake db:migrate

舉例:在控制器中使用當前的session就像使用乙個hash一樣,用符號:cart作為它的索引。

(1) : 在乙個顯示頁面(views/store/index.rhtml)

<% for product in @products %>

<%= link_to "新增到購物車" ,:action=>:add_to_cart,:id=>product %>

<% end %>

def add_to_cart    # views檢視呼叫此方法

@cart=find_cart #find_cart 方法是從session中找出購物車物件(cart)

product=product.find(params[:id]) #利用params物件從請求中取出id引數,product模型根據id找出貨品

@cart.add_product(product) #把該貨品放入購物車

enddef find_cart

session[:cart] ||=cart.new #cart是購物車模型類

end# ||= 是條件賦值操作符,如果 session中已經有:cart這個鍵,上述語句返回:cart鍵對應的值,否則,先新建乙個cart物件,將其放入session,返回新建物件

params是rails乙個物件,包含了瀏覽器請求傳來的所有引數,params[:id]包含了將被action使用的物件id(主鍵)

(3:) 模型類cart

class cart

attr_reader:items

def initialize

@items=

enddef add_product(product)

@items<(4):呼叫方法後返回頁面(add_to_cart.rhtml)

<% for item in @cart.items %>

<%= item.title%>

<% end %>

Web開發敏捷之道Rails(筆記一)

1 mvc中的模型 model 模型攜帶者資料,還負責執行施加於這些資料上的業務規則,比如,對於20元以下的訂單不予打折 這一約束就要由模型來確保。也即,模型是資料的容器,也是資料的監護者。2 mvc中的檢視 view 負責生成使用者介面,根據模型中的資料生成。3 mvc中的控制器 controll...

Web開發敏捷之道Rails(筆記二)

1 新增資料庫缺失字段 先建立乙個遷移任務,取乙個一目了然的名字,一般用create來建立表,add來給表增加字段。ruby script generate migration add price add price為遷移任務名字 開啟這個遷移任務原始檔,在up方法內插入字段 向表裡新增字段 add...

《應用Rails進行敏捷Web開發》樣章試讀

這是第一本關於 ruby on rails 的著作。除了上述兩部分之外,對rails缺乏了解的讀者應該首先閱讀 起步 部分,通過乙個最簡單的示例應用感性了解這個時下熱門的web框架。不熟悉ruby的讀者應該閱讀 附錄 部分中的 ruby簡介 以便了解ruby的基本語法與常見用法。整體而言,全書既有直...