私はRuby(Ruby 1.9.3/RoR 3.2)の新機能です。私はグラバターを作成するためにこの関数を書いた。デフォルトのオプションを上書きせずにオプションのハッシュをどのように渡しますか?
def gravatar_for(user, options = { size: 50, default: 'identicon' })
gravatar_id = Digest::MD5::hexdigest(user.email.downcase)
s = options[:size]
d = options[:default]
gravatar_url = "http://gravatar.com/avatar/#{gravatar_id}.png?s=#{s}&d=#{d}"
image_tag(gravatar_url, alt: user.name, class: 'gravatar')
end
<%= gravatar_for user %>
を呼び出す。 <%= gravatar_for user、size = 30%>を呼び出すと、デフォルトのオプションidenticon
が失われます。これは、メソッド定義のハッシュが、呼び出し元から渡されているハッシュによって上書きされているためです。
いくつかのオプションを渡すことができるようにするにはどうすればよいですか?また、メソッド定義で指定されているものはデフォルトですか?私は<%= gravatar_for user, size: 30 %>
に電話をかけ、その引数が呼び出し元から省略されていても、サイズが30で、identicon
のスタイルのグラバターを返すようにします。
:http://stackoverflow.com/questions/1980794/how-can-i-merge-two-hashesを - 上書きされない - 重複キー - ルビー – joeytwiddle