2012-04-20 61 views
2

我有一個小HAML款的鏈接是這樣的:HAML - 如何把鏈接之間的常規文本

%p 
    =link_to("My Disclosures", "#") 
    =link_to("Create Disclosure", "#") 
    =link_to("My Programs", "#") 
    =link_to("Log Out", "#") 

我想要做的就是把一個分離器這樣的「|」鏈接之間,但我不知道如何。我試着把它放在「」中的文本旁邊,但它成爲鏈接文本的一部分。當我嘗試將分隔符放在行尾時,它只是沒有顯示出來。

任何想法如何讓我的字符在鏈接之後呈現爲文本?

謝謝!

回答

5

你可以只寫在自己的行字符串本身:

%p 
    =link_to("My Disclosures", "#") 
    | 
    =link_to("Create Disclosure", "#") 
    | 
    =link_to("My Programs", "#") 
    | 
    =link_to("Log Out", "#") 

或者,您可以將其添加到您的輸出字符串:

%p 
    =link_to("My Disclosures", "#") << '|' 
    =link_to("Create Disclosure", "#") << '|' 
    =link_to("My Programs", "#") << '|' 
    =link_to("Log Out", "#") 
+0

非常喜歡css或助手路線方法。隨着時間的推移,開始有點這樣的觀點將會逐漸惡化,直到他們成爲一個大雜燴。 – 2012-06-22 16:18:55

+0

我也是@MichaelDurrant。我會接受[jdoe的回答](http://stackoverflow.com/a/10250672/107277)。 – 2012-06-22 16:28:06

4

我有同樣的問題。這是我如何解決它:在任何視圖

def links_bar(join_with = ' | ', &block) 
    capture{yield}.split("\n").join(join_with).html_safe 
end 

2):

= links_bar do 
    = link_to("My Disclosures", "#") 
    = link_to("Create Disclosure", "#") 
    = link_to("My Programs", "#") 
    = link_to("Log Out", "#") 

生成:

1)模塊ApplicationHelper

<a href="#">My Disclosures</a> | <a href="#">Create Disclosure</a> | <a href="#">My Programs</a> | <a href="#">Log Out</a> 

我瘋了? ;)

感謝Semyon Perepelitsa的提示。

+1

我會將該方法放入一個像ApplicationHelper這樣的輔助模塊中,但它與控制器沒有任何關係。此外,我不明白'block.binding.eval('self')。capture {yield}'部分,'capture(&block)'應該工作。 – 2012-04-20 17:25:59

+0

我剛在一個塵土飛揚的盒子裏發現它。我不記得爲什麼我把它放在那裏,但)但我同意你的看法。我會改變我的答案。 'block ...'部分是需要的,因爲'capture' helper在控制器內不可用。這就是爲什麼我「提取」視圖並將「捕獲」應用於其中。 – jdoe 2012-04-20 17:32:03

+1

現在我明白了。如果你把它放在幫助器中,那麼你不需要這樣做,因爲你已經在視圖的上下文中。 – 2012-04-20 17:34:58

1

在這種情況下,你會以錯誤的方式處理事情。

一個更正確的方式來獲得你的效果後,會涉及到一些CSS:

ul.nav { 
    list-style:none; 
    margin:0; 
    padding:0 
} 

ul.nav li { 
    margin:0; 
    padding:0 0.5em; 
    border-right:1px solid black 
} 

ul.nav li.last { 
    border-right:none; 
} 

%ul.nav 
    %li=link_to("My Disclosures", "#") 
    %li=link_to("Create Disclosure", "#") 
    %li=link_to("My Programs", "#") 
    %li.last=link_to("Log Out", "#") 

這種方式,你有一個簡單的,語義正確,訪問和搜索的它轉換到鏈接引擎友好名單使用CSS的神奇風格的列表。

我知道我正在回答您詢問的問題,但您應該知道解決此用例的「正確」方法。

相關問題