Ruby on rails 任何避免使用gsub的方法!替换
我在问题中运行,我使用了以下代码Ruby on rails 任何避免使用gsub的方法!替换,ruby-on-rails,ruby,Ruby On Rails,Ruby,我在问题中运行,我使用了以下代码 def replace_variables(url, project) variables = define_variables(project) variables.each do |key, value| url.gsub!(key, value_encode(value)) end url end 问题是由于gsub!使用率上升,影响所有数据,我只想在这里更改数据。所以我找到了下面的解决方案,但这并不好
def replace_variables(url, project)
variables = define_variables(project)
variables.each do |key, value|
url.gsub!(key, value_encode(value))
end
url
end
问题是由于gsub!使用率上升,影响所有数据,我只想在这里更改数据。所以我找到了下面的解决方案,但这并不好,任何其他方法都不行。因为变量定义太多。这很好,但似乎是额外的变量定义
def replace_variables(url, project)
variables = define_variables(project)
temp_url = url
variables.each do |key, value|
temp_url = temp_url.gsub(key, value_encode(value))
end
temp_url
end
更多解释代码创建一些变量并从url替换它,并更改它的值,但我有一个表单数组,如果首先运行它,它也会更改这些表单的值!这是我不想要的。上面的代码运行良好,但在我定义累加器变量和迭代时看起来很糟糕,是否有其他方法可以优雅地完成它。我有以下定义方法
def define_variables(project)
{
'TODAYS_DATE' => Date.current.to_s,
'USER_NAME' => username,
'PROJECT_NAME' => project.name || '',
}
end
如果#define_variables
返回一个键/值散列,那么类似的方法应该可以工作
def replace_variables(url, project)
define_variables(project).inject(url) do |memo, (key, value)|
memo.gsub(key, value_encode(value))
end
end
gsub代码>与一起使用代码>结尾处的符号会使字符串本身发生变化。你能提供输入数据和预期输出吗?哦,谢谢,是的,这很有效。