2016-12-03 6 views
1

内の文字列で関数を補間します。フェニックス:私はパン粉(マークアップのためのスライムを使用して)のセットで表示するリンクを持っているテンプレート

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

これは問題なくレンダリングされます。しかし、私は他のリンクを使って、それを文脈で示したいと思います。しかし、どちらもそれらの技術の

が動作

Projects >プロジェクト名:

# 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))} 

所望の出力は次のようになります。このテキストにこのリンクを追加するにはどうすればよいですか?

これが上記のように機能しない理由を説明できる場合、ボーナスポイントが必要です。

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

あなたはまだそれが単一の行に置くことができます:

link機能が戻ると、このようにタプル:{:safe, "link_string"}

+0

なぜあなたは別の行に入れませんか? '=リンク(...)\ n | > \ n =リンク(...) '? – Dogbert

+0

Interpolationはより多くの制御と明瞭さを提供しますが、私はあなたの要点を見ています – steel

答えて

2

はちょうどそれマルチラインを作ります。文字列としてリンクを使用する場合は、Kernel.elem(tuple、1)を介してタプルから2番目の要素を選択する必要があります。 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)}" 
関連する問題