如何在Ruby变量名中使用字符串



我有一个字符串,我想用它作为变量名的一部分。具体来说,在Rails路由路径中:

<%= foo_path %>
<%= bar_path %>

我希望路由名的第一部分是动态的。比如

@lol = "foo"
<%= [@lol]_path %> # <-- This would really be the "foo_path" variable

Ruby可以做到吗?

当然:

lol = 'foo'
send "#{lol}_path"
# or
send lol + '_path'

说明:Object#send将方法发送给(即。"调用"接收者的方法。与任何方法调用一样,没有显式的接收者(例如some_object.send 'foo'),当前上下文成为接收者,因此调用send :foo相当于self.send :foo。事实上,Rails在幕后使用了很多这种技术(例如)。

再来点!

class Person
  attr_accessor :pet
end
class Pet
  def make_noise
     "Woof! Woof!"
  end
end
var_name = "pet"
p = Person.new
p.pet = Pet.new
(p.send "#{var_name}").make_noise

那么这里发生的是:
p.send "some_method"调用p.some_method,括号包围使得链接成为可能,即最后调用p.pet.make_noise。希望我讲清楚了

相关内容

  • 没有找到相关文章

最新更新