2012-03-21 56 views
1

我想在控制器中能夠說store[...]而不是cookies[...](不要問爲什麼 - 我也不想調用'永久')。爲此,我在幫手中創建了以下內容:訪問幫助程序的Cookie

module ApplicationHelper 

     $cookies = 0 

     class Store 

     def self.[] (k) 
      $cookies[k] 
     end 

     def self.[]= (k,v) 
      $cookies.permanent[k] = v 
     end 

     end  

     def store 
     $cookies = cookies 
     Store 
     end 

它可行,但不用說我不滿意它。如何改進/縮短。如何將所有對「cookies」的引用放入Store類本身?

+0

這將有助於降低選民添加註釋解釋自己, – Mark 2012-03-21 00:35:55

+0

到底是侮辱別人這個查詢什麼。對於來自C++的人來說,Ruby中的變量範圍存在很多模糊性。 – Mark 2012-03-21 00:40:05

回答

0

OK,我想出了一個直接的改良效果...

module ApplicationHelper 

    class Store 

    def initialize (cookies) 
     @cookies = cookies 
    end 

    def [] (k) 
     @cookies[k] 
    end 

    def []= (k,v) 
     @cookies.permanent[k] = v 
    end 

    end  

    def store 
    @store ||= Store.new(cookies) 
    end