【发布时间】:2017-01-19 22:32:51
【问题描述】:
所以基本设置如下:
在 app/services/SomeService/ABC.rb 中
class SomeService::ABC
FORBIDDEN_CHARS = {" " => "+", "'" => "%27", "/" => "%2F", ":" => "%3A", "&" => "%26"}
def my_function(input)
#now do something fancy with the input
var = .... #a String is created
var.to_linkable
# continue with something fancy
end
def to_linkable
FORBIDDEN_CHARS.each{|key,value| self.gsub!(key,value)}
end
end
这会导致错误:undefined method `to_linkable' for "bla bla":String
但是以这种方式工作:
def to_linkable(link)
FORBIDDEN_CHARS.each{|key,value| link.gsub!(key,value)}
end
但我必须用 'to_linkable(link)' 来调用它,而不是仅仅放置 'link.to_linkable'。如果我以第一种方式将代码复制粘贴到终端中,则调用“link.to_linkable”时不会出错。
所以我的问题是:我如何(以及在哪里?)正确地创建这样一个 to_linkable 方法?我以后可能想使用它,这就是为什么我希望它是一种易于使用的方法。非常感谢 :) 是的,我是来自 Matlab 的 Ruby 新手:D
【问题讨论】:
-
猴子补丁
-
哇,感谢您提供如此快速而有帮助的回复!扩展字符串类有效(URI 替换字符的方式与我不同)并且我理解了更多内容 :-)
-
是的,
Uri.escape的行为与您的略有不同。但这有关系吗?除非您有充分的理由不使用它(这当然可能只是为了好玩/作为学习练习!),否则请始终使用“标准”解决方案:)