2
我是Ruby新手(Ruby 1.9.3/RoR 3.2)。我写了这个函数来创建一个gravatar。如何在不覆盖默认选项的情况下传递选项散列?
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
的gravatar,尽管调用者省略了这个参数。
合并两个哈希值:http://stackoverflow.com/questions/1980794/how-can-i-merge-two-hashes -without-覆盖重复的密钥功能于红宝石 – joeytwiddle 2015-01-16 23:09:01