Phoenix:在模板中的字符串中插入函数

时间:2016-12-03 04:31:51

标签: elixir phoenix-framework

我想在一组面包屑中显示一个链接(使用Slime进行标记)。

= link(@project.name, to: project_path(@conn, :show, @project))

这很好。但我想用其他链接在上下文中显示它。

# by concatenation
= link("Projects > ", to: project_path(@conn, :index)) <> link(@project.name, to: project_path(@conn, :show, @project))

# or by interpolation
#{link("Projects", to: project_path(@conn, :index))} > #{link(@project.name, to: project_path(@conn, :show, @project))}

所需的输出看起来像这样:

Projects > 项目名称

但是,这些技术都不起作用。如何将此链接添加到此文本?

如果您可以解释为什么这不起作用,那么可以获得奖励。

1 个答案:

答案 0 :(得分:2)

让它成为多行:

= link("Projects > ", to: project_path(@conn, :index))
= link(@project.name, to: project_path(@conn, :show, @project))

你仍然可以把它放在一行:

link函数返回这样的元组:{:safe, "link_string"}。如果要将链接用作字符串,则需要通过Kernel.elem(元组,1)从元组中选择第二个元素。 See what content_tag (which is used in link()) returns

此外,您还需要使用raw()呈现任何html标记。

这有效:

= raw "#{Kernel.elem(link("Projects > ", to: project_path(@conn, :index)), 1)} #{Kernel.elem(link(@project.name, to: project_path(@conn, :show, @project)), 1)}"