从数据库中提取方法名称的字符串?

时间:2013-06-26 07:33:57

标签: ruby-on-rails arrays

我正在尝试一些新事物并且我很顽固,所以我想用尽所有可能性。

我有一个名为navbar的模型,其中包含链接字段。

在链接字段中,我存储了许多单词:

profile_link community_link

这些词很重要,因为它们也是我在navbars_helper中记录的方法的名称:

module NavbarsHelper
  def profile_link
    link_to current_user do
      image_tag(current_user.image.img.mini_avatar)
      current_user.name
    end
  end
  def community_link
    link_to 'Community', topics_path
  end
 ...
end

我尝试的新功能是从字符串中提取单词并使用它们来调用标题布局中的方法:

 - if signed_in?
      - @current_group.navbars do |navbar|
        - if navbar.kind == "Header"
          = navbar.links.to_s

navbar belongs_to group

所以,我得到的是标题中的字符串:profile_link community_link

但是,我想要的是对方法的调用。这可能吗?如果是这样,你能告诉我你会怎么做吗?

我在使用数组方面经验不足,我认为它可能与

有关

1 个答案:

答案 0 :(得分:1)

我想它可以工作,虽然我不确定它是否值得:你增加了很多复杂性,几乎没有额外的好处。

说的是,有些东西是

- if signed_in?     
  - @current_group.navbars.each do |navbar|
    - if navbar.kind == "Header"
      - navbar.links.split(' ').each do |method|
        = self.send(method)

基本上,取字符串"profile_link community_link",使用空格字符将其拆分,然后将每个方法发送到视图(在此上下文中为self)。使用send只是像正常情况一样执行方法,但是为您提供了决定在运行时执行哪个方法的好处:)