在ruby方法中传递字符串和块do

在ruby方法中传递字符串和块do,ruby,Ruby,正在尝试传递方法中的块: self.handler_method("pinterest", do |pinterest| handle_facebook(pinterest.get_facebook[:username]) if pinterest.facebook_found? handle_twitter(pinterest.get_twitter[:username]) if pinterest.twitter_found? end).call(username) 它不断返回

正在尝试传递方法中的块:

self.handler_method("pinterest", do |pinterest|
   handle_facebook(pinterest.get_facebook[:username]) if pinterest.facebook_found?
   handle_twitter(pinterest.get_twitter[:username]) if pinterest.twitter_found?
end).call(username)
它不断返回错误:

syntax error, unexpected keyword_do_block (SyntaxError)
                self.handler_method "pinterest", do |pinterest|
                                                   ^
如何修复它,使其同时接受两个参数。我可以使用内联块方式
{}
,但更愿意使用
do,end

谢谢

应该是:

self.handler_method("pinterest") do |pinterest|
   handle_facebook(pinterest.get_facebook[:username]) if pinterest.facebook_found?
   handle_twitter(pinterest.get_twitter[:username]) if pinterest.twitter_found?
end.call(username)
应该是:

self.handler_method("pinterest") do |pinterest|
   handle_facebook(pinterest.get_facebook[:username]) if pinterest.facebook_found?
   handle_twitter(pinterest.get_twitter[:username]) if pinterest.twitter_found?
end.call(username)
应该是:

self.handler_method("pinterest") do |pinterest|
   handle_facebook(pinterest.get_facebook[:username]) if pinterest.facebook_found?
   handle_twitter(pinterest.get_twitter[:username]) if pinterest.twitter_found?
end.call(username)
应该是:

self.handler_method("pinterest") do |pinterest|
   handle_facebook(pinterest.get_facebook[:username]) if pinterest.facebook_found?
   handle_twitter(pinterest.get_twitter[:username]) if pinterest.twitter_found?
end.call(username)

没错!等待12分钟。但是为什么这样做不在方法括号内有效,因为块到方法应该在括号外传递。从调用方的角度来看,块不是方法参数。您只将方法args放在括号中(如果在Ruby中有)
do…end
然后始终在没有参数的情况下跟随参数。我之所以说“从调用方的角度”,是因为在实现接受块的方法时,可以在方法签名中将块指定为参数。这是Ruby的矛盾之一…完成了!谢谢@MarekLipka!没错!等待12分钟。但是为什么这样做不在方法括号内有效,因为块到方法应该在括号外传递。从调用方的角度来看,块不是方法参数。您只将方法args放在括号中(如果在Ruby中有)
do…end
然后始终在没有参数的情况下跟随参数。我之所以说“从调用方的角度”,是因为在实现接受块的方法时,可以在方法签名中将块指定为参数。这是Ruby的矛盾之一…完成了!谢谢@MarekLipka!没错!等待12分钟。但是为什么这样做不在方法括号内有效,因为块到方法应该在括号外传递。从调用方的角度来看,块不是方法参数。您只将方法args放在括号中(如果在Ruby中有)
do…end
然后始终在没有参数的情况下跟随参数。我之所以说“从调用方的角度”,是因为在实现接受块的方法时,可以在方法签名中将块指定为参数。这是Ruby的矛盾之一…完成了!谢谢@MarekLipka!没错!等待12分钟。但是为什么这样做不在方法括号内有效,因为块到方法应该在括号外传递。从调用方的角度来看,块不是方法参数。您只将方法args放在括号中(如果在Ruby中有)
do…end
然后始终在没有参数的情况下跟随参数。我之所以说“从调用方的角度”,是因为在实现接受块的方法时,可以在方法签名中将块指定为参数。这是Ruby的矛盾之一…完成了!谢谢@MarekLipka!