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