我需要将本地化字符串替换为本地化方法。
自:
"social_1.localized()"
要:
"social_1".localized()
最好的方法是什么?
答案 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)