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

时间:2011-11-16 06:03:44

标签: ruby-on-rails ruby string variables dynamic-variables

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

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

我希望路由名称的第一部分是动态的。像

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

Ruby能做到吗?

2 个答案:

答案 0 :(得分:10)

不确定

lol = 'foo'

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

说明:Object#send将方法发送到(即“调用”方法)接收器。与任何方法调用一样,如果没有显式接收器(例如some_object.send 'foo'),当前上下文将成为接收者,因此调用send :foo等同于self.send :foo。事实上,Rails在幕后使用了这种技术(e.g.)。

答案 1 :(得分:2)

更多!

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。希望我很清楚。