Ruby 带块的Hash.new返回空哈希
为什么这个散列返回为空?它位于我的文档模型中:Ruby 带块的Hash.new返回空哈希,ruby,hash,Ruby,Hash,为什么这个散列返回为空?它位于我的文档模型中: def li_hash li_hash = Hash.new do |share| share.comment "#{self.remove_html(self.components.first.body[0..300])}..." share.content do |c| c.title "#{self.title}" c.description "Read this" c.tag! "su
def li_hash
li_hash = Hash.new do |share|
share.comment "#{self.remove_html(self.components.first.body[0..300])}..."
share.content do |c|
c.title "#{self.title}"
c.description "Read this"
c.tag! "submitted-url", "#{root_url.gsub(/\/$/, '')}#{share_path(self.user.ftp, self)}"
c.tag! "submitted-image-url", "#{root_url.gsub(/\/$/, '')}#{self.component.image_newsletter.path}"
end
share.visibility.code "anyone"
end
end
我是这样从控制台调用它的:
d = Document.find(328)
d.li_hash
它只是返回:
=> {}
该记录是有效的,并且全部有效。有什么想法吗?我正在尝试将此哈希提交给LinkedIn,但它显然无法正常工作。
哈希。new
始终返回空哈希。指定的块仅用于在使用哈希中不存在的密钥访问哈希时提供默认值,per表示:
如果指定了块,则将使用哈希对象和
键,并应返回默认值。这是街区的
如果需要,负责将值存储在哈希中
在更新哈希之前,哈希中不会有任何内容。此代码中实际上没有设置任何内容。另外,我认为您可能误解了将块传递给哈希的作用。当您将一个块传递给散列时,您可以做的是设置一个lambda,该lambda将在散列的每个后续加法中执行 作为缔约国: 如果指定了块,则将使用哈希对象和键调用该块,并应返回默认值。如果需要,块负责将值存储在散列中 如果您正试图以确定的方式在散列中设置一组参数,则应明确声明散列,如下所示:
{
:comment => "#{self.remove_html(self.components.first.body[0..300])}...",
:content => {
:title => "#{self.title}",
:description => "Read this",
}
}
然后,如果您有任何副作用(如
标记!
方法),请分别这样做。共享.visibility.code“任何人”做什么?它似乎返回了nil
…它将一个字符串设置为any
。它不是一个变量或任何东西。我重写了这个方法,但它只会给我抛出一堆期望关键字\u end
错误。将更新问题。谢谢!等等:逗号?仅在顶层?啊,得到了格式<代码>根url显然在模型中不起作用,但是是的。