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的基本語法與常見用法。整體而言,全書既有直...