字符串替换为方法

时间:2016-02-09 09:00:49

标签: ruby

我需要将本地化字符串替换为本地化方法。

自:

"social_1.localized()"

要:

"social_1".localized()

最好的方法是什么?

1 个答案:

答案 0 :(得分:3)

可能是这样的:

"social_1.localized()".gsub(".localized()","").localized()

my_string, my_method = "social_1.localized()".split('.')
my_method = my_method.gsub!("()",'').to_sym
my_string.send(my_method)

@ uri-agassi(见评论)是对的。使用send这种方式可能存在安全隐患。特别是如果它来自用户输入(即来自params对象)。你可以考虑将可调用的方法列入白名单:

if [:upcase, :downcase, :capitalize].include?(my_method)
  my_string.send(my_method)
end

或至少询问该对象,它知道要调用的方法:

my_string.send(my_method) if my_string.respond_to?(my_method)