2015-01-09 122 views
0

我想在聲明紅寶石散列時使用其他變量的值。正如我所料,這些價值現在正在逃脫。我怎樣才能解決這個問題?在散列中轉義紅寶石值

變量

ipa_url,名稱,版本和捆綁標識符

代碼

data = { 
      plist: { 
       dict: { 
       key: 'items', 
       array: { 
        dict: { 
        key: %w('assets','metadata'), 
        array: { 
         dict: [{ key: %w('kind','url'), 
           string: %w('software-package', 
              "#{ipa_url") }, 
          { key: %w('kind','url'), 
           string: %w('display-image',"#{icon_url.to_s}") }, 
          { key: %w('kind','url'), 
           string: %w('full-size-image', 
              "#{icon_url}") }], 
         dict: { key: %w('bundle-identifier','bundle-version', 
             'kind','title'), 
           string: %w("#{bundle-identifier}","#{version}", 
             'software',"#{name}") 
         } 
        } 
        } 
       } 
       } 
      } 
      } 
+3

你確定你的意思是'%w('assets','metadata')'?難道你不是真的想'%w(資產元數據)'或'['assets','metadata']'? –

+0

@ muistooshort你是對的,謝謝 –

+1

當提出這樣的問題時,將你的數據樣本減少到最低限度,以便有效地證明問題。除此之外的任何事情都會減慢我們幫助你的能力。 –

回答

3

%w標識符被用來創建數組了空間分隔符的文本:

%w(this is a test) 
# => ["this", "is", "a", "test"] 

如果你想用串插在那裏,你應該使用%W代替:

variable = 'test' 
%W(this is a #{variable}) 
# => ["this", "is", "a", "test"] 
1

zenspider越過對此進行了詳細,但對SO的目的,這裏的崩潰:

%Q(無內插)

[6] pry(main)> hey 
=> "hello" 
[7] pry(main)> hash = { 'hi' => %q("#{hey}", 'how are you') } 
=> {"hi"=>"\"\#{hey}\", 'how are you'"} 

%Q(內插和反斜槓)

[8] pry(main)> hash = { 'hi' => %Q("#{hey}", 'how are you') } 
=> {"hi"=>"\"hello\", 'how are you'"} 

%(內插和反斜槓)

[9] pry(main)> hash = { 'hi' => %("#{hey}", 'how are you') } 
=> {"hi"=>"\"hello\", 'how are you'"} 

%W(內插)作爲Uri顯示的

[7] pry(main)> hash = { 'hi' => %W(#{hey} how are you) } 
=> {"hi"=>["hello", "how", "are", "you"]}