簡體   English   中英

Ruby on Rails:如何為請求標頭創建帶引號的字符串?

[英]Ruby on Rails: How may create a quoted string to a request header?

我正在從頭開始編寫Twitter客戶端,但前提之一是使用Twitter gems,因此必須創建自己的請求。

Twitter API文檔在這里說,我必須具有這樣的Authorization標頭:

Authorization:
OAuth oauth_consumer_key="xvz1evFS4wEEPTGEFPHBog",
oauth_nonce="kYjzVBB8Y0ZFabxSWbWovY3uYSQ2pTgmZeNu2VS4cg",
oauth_signature="tnnArxj06cWHq44gCs1OSKk%2FjLY%3D",
oauth_signature_method="HMAC-SHA1",
oauth_timestamp="1318622958",
oauth_token="370773112-GmHxMAgYyLbNEtIKZeRNFsMKPR9EyMZeS9weJAEb",
oauth_version="1.0"

如您所見,我必須使用類似oauth_consumer_key="xvz1evFS4wEEPTGEFPHBog" ,並將第二部分用引號引起來。 我嘗試使用像

["oauth_consumer_key",%Q( Figaro.env.TWITTER_ACCESS_TOKEN )].join('=')

假設%Q將返回帶引號的字符串。 但是當我檢查價值時,我得到的只是

oauth_consumer_key=xvz1evFS4wEEPTGEFPHBog

顯然,這與所需結果不同。

我想念什么?

%Q(x)與“ x”基本相同。

為了獲得所需的結果,您必須手動將引號引入%Q表達式中,例如: %Q("#{Figaro.env.TWITTER_ACCESS_TOKEN}")

1.我的解決方案:

'oauth_consumer_key="#{Figaro.env.TWITTER_ACCESS_TOKEN}"'

2.為什么:

%Q()基本上用雙引號""替換變量,這實際上與您編寫"Figaro.env.TWITTER_ACCESS_TOKEN"

實際上,要顯示變量的內容 ,必須使用"#{var}"使用插值法而不是名稱本身。

您也可以將%Q直接用於%Q{var}插值(注意{}代替() )。

您的問題在其他地方:使用join()方法。 它消除了雙引號。 在那種情況下,執行["var", var].join('=')["var", %Q{var}].join('=')會做完全相同的事情,但是更加復雜。

@Artem Ignatiev的解決方案應該有效 但是,如果您需要更具可讀性,甚至不需要加入,恕我直言,僅當您使用兩個以上的變量時,它才有意義。

例如,我將使用諸如'oauth_consumer_key="#{var}"'混合單引號和雙引號來確保不會引起混淆。

如果確實需要使用%Q()join ,則仍然可以使用["oauth_consumer_key", %Q("#{Figaro.env.TWITTER_ACCESS_TOKEN})].join('=')

  • 請注意,由於join您可以使用單引號內插%q或雙引號內插%Q而不影響最終結果:

例如

['oauth_consumer_key', %q("#{var}")].join('=') == ["oauth_consumer_key", %Q("#{var}")].join('=')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM