Ruby on rails 方法名的字符串

Ruby on rails 方法名的字符串,ruby-on-rails,ruby,Ruby On Rails,Ruby,我似乎不能跟随,但也许这与我试图实现的目标不同 我有一个字符串,该字符串在同一时间可能不同,我需要将该字符串转换为定义的方法名: action = "get_name" # The method def get_name puts "James" end # Calling the method action # => undefined method `action' for main:Object action可以是我定义的任何方法,并且名称为字符串格式。我可以说动作吗?对于

我似乎不能跟随,但也许这与我试图实现的目标不同

我有一个字符串,该字符串在同一时间可能不同,我需要将该字符串转换为定义的方法名:

action = "get_name"

# The method
def get_name
  puts "James"
end

# Calling the method
action # => undefined method `action' for main:Object
action
可以是我定义的任何方法,并且名称为字符串格式。我可以说动作吗?对于方法,你明白我的意思;)

我想我不能说动作了

method(action).call

例如:

method(action).call
#=> James
public_send(action)
#=> James

但是,请注意,上面的没有一个关心方法最初定义的上下文,因此两者都将在当前对象的上下文中调用它。

Hi,即使我有参数:
action(a,b)
@Sylar否,在这种情况下它将不起作用。因为,例如,对于
public\u send
它应该看起来像
public\u send(action,a,b)
,其中
a
b
是参数。
public\u send()
最好。谢谢大家!@Sylar在这种情况下
eval
将执行:
eval(“操作(1,2)”)
,其中
1
2
是实际参数。但正如我们所知,
eval
是邪恶的,尤其是当您从传入的参数中评估某些东西时,所以不要去想它!)那么什么是最安全的呢<代码>公共发送?
method(action).call
#=> James
public_send(action)
#=> James