我正在尝试一些新事物并且我很顽固,所以我想用尽所有可能性。
我有一个名为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
但是,我想要的是对方法的调用。这可能吗?如果是这样,你能告诉我你会怎么做吗?
我在使用数组方面经验不足,我认为它可能与
有关答案 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
只是像正常情况一样执行方法,但是为您提供了决定在运行时执行哪个方法的好处:)