如何调用表示为字符串的方法

时间:2016-02-09 14:54:44

标签: ruby

我有这段代码:

def show_block_path
  Rails.application.routes.url_helpers.gate_path(resource_id))
end

我试图重构它:

def show_block_path
  Rails.application.routes.url_helpers."{resource_type.downcase}"_path(resource_id))
end

resource_type.downcase"gate",但该方法不起作用。为什么呢?

1 个答案:

答案 0 :(得分:4)

使用Object#public_send

def show_block_path
  Rails.application.routes.url_helpers.public_send(
    "#{resource_type.downcase}_path", resource_id
  )
end