2014-11-24 75 views
0

我嘗試在Rails幫助程序中設置一些選項,但似乎它每次都被覆蓋。Rails幫助程序中的實例變量未設置

module MetaTagHelper 

    def meta_options 
    @meta_options ||= {} 
    end 

    def add_meta_tag_options(opt) 
    meta_options.deep_merge(opt) 
    end 
end 

下面是測試

require 'rspec' 

describe MetaTagHelper do 

    it 'options should be set' do 
    option = {region: "1"} 
    option2 = {country: "AT"} 
    helper.add_meta_tag_options(option) 
    helper.add_meta_tag_options(option2).should eql(option.merge option2) 
    end 
end 


expected: {:region=>"1", :country=>"AT"} 
    got: {:country=>"AT"} 

我怎樣才能得到規範通?

+4

['deep_merge'(http://api.rubyonrails.org/classes/Hash.html#method-i-deep_merge)返回一個新的哈希值,也許你」重新尋找['deep_merge!'](http://api.rubyonrails.org/classes/Hash.html#method-i-deep_merge-21) – Stefan 2014-11-24 10:55:47

回答

1

嘗試使用deep_merge!

def add_meta_tag_options(opt) 
    meta_options.deep_merge!(opt) 
    end