2016-12-03 44 views
1

我有一個鏈接,我想在一組麪包屑中顯示(使用Slime作爲標記)。Phoenix:插入模板中的字符串函數

= 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 >項目名稱

的無論這些技術,但是。我如何將此鏈接添加到此文本?

獎勵積分,如果你能解釋爲什麼這不起作用如上。

+0

你爲什麼不把它們放在不同的行? '= link(...)\ n | > \ n =鏈接(...)'? – Dogbert

+0

插值提供了更多的控制和清晰度,我想,但我明白了你的觀點 – steel

回答

2

就讓它多行:

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

你仍然可以把它在一個單行:

link函數返回元組是這樣的:{:safe, "link_string"}。如果你想使用鏈接作爲字符串,你需要通過Kernel.elem(tuple,1)從元組中選擇第二個元素。 See what content_tag (which is used in link()) returns

此外,您還需要呈現任何HTML標記raw()

這工作:

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