2013-12-15 45 views
-1

我是Ruby on Rails的新手。我下面一書「敏捷Web開發使用Rails」rails表達式的含義

在這本書中,他們展示瞭如何通過下面的代碼段建立會話

class ApplicationController < ActionController::Base 
    protect_from_forgery 
private 
    def current_cart 
    Cart.find(session[:cart_id]) 
    rescue ActiveRecord::RecordNotFound 
    cart = Cart.create 
    session[:cart_id] = cart.id 
    cart 
    end 
end 

我不明白的是,他們將其設置成私人部分,但我仍然可以從其他類訪問此功能,我也不明白這是什麼意思:cart_id我的意思是他們如何在cart_it變量中獲得值,儘管在應用程序中我從來沒有在該變量中設置值。

感謝

回答

0

方法current_cart設置爲私有的,但它在ApplicationController定義。所有其他控制器都可能從該控制器繼承,以便他們可以訪問它。

:cart_id是一個符號。你設置/獲取會話變量的Rails的方式是

# set 
session[:key] = value 

# get 
session[:key] 

你設定值低於正好是三線,在搶救塊。

rescue ActiveRecord::RecordNotFound 
    cart = Cart.create 
    session[:cart_id] = cart.id 
    cart 
end 

的流程如下:當車不存在,則在會話創建一個商店的ID。當購物車存在時,您將其歸還。

在繼續進行Rails開發之前,您可能需要學習一些Ruby,否則即使最簡單的代碼片段對您來說也是完全不瞭解的。