2012-07-11 38 views
3

我使用Enki博客gem作爲內容管理系統的一種類型。它允許你創建帖子和頁面。它會自動生成兩頁(家庭和檔案)。我還創建了另外兩個示例頁面,即服務和產品,並將創建更多。因此,當我要列出在主頁上的所有網頁,我做這Rails:如何從「每個」方法中排除一個項目

<% page_links_for_navigation.each do |link| -%> 
    <li><%= link_to(link.name, link.url) %></li> 
    <% end -%> 


Home 
Archives 
Services 
Products 

我可能要在以後創建更多的頁面,所以它在所有的頁面像這樣更好地循環,而不是硬編碼每個網頁的網址。

但是,如果我想排除其中一個頁面(即檔案),我將如何更改該代碼。 Enki自動生成該頁面,並且不會給我一個刪除它的選項。不過,我不想刪除檔案,因爲我想用它發佈鏈接到博客帖子。

因此,簡而言之,我將如何排除一個特定的頁面從這個代碼

<% page_links_for_navigation.each do |link| -%> 
    <li><%= link_to(link.name, link.url) %></li> 
    <% end -%> 

檔案館的網址爲localhost:3000 /檔案館

回答

5
<% page_links_for_navigation.each do |link| -%> 
    <% if link.name != 'Archives' %>  
     <li><%= link_to(link.name, link.url) %></li> 
    <% end %> 
    <% end -%> 

或使用page_links_for_navigation.reject {|page| page.name == 'Archives'}.each

編輯:

添加更多的頁面是!['Archives', 'Home'].include? link.name或者只是添加要包括那些和刪除!

閱讀

http://www.humblelittlerubybook.com/

http://www.ruby-doc.org/docs/ProgrammingRuby/

+0

感謝,這些工作,但是如果我試圖排除第二個頁面,我遇到了麻煩,例如, '家'(以及檔案)。例如,我做了<%if link.name!='Archives'|| '首頁'%>或拒絕{| page | page.name =='檔案','家'}任何想法? – Leahcim 2012-07-11 06:59:23

+0

+1 for'page_links_for_navigation.reject {| page | page.name =='Archives'}。each' – 2012-07-11 07:48:37

8

另一種方式

<% page_links_for_navigation.each do |link| -%> 
    <% next if link.name == 'Archives' %> 
    <li><%= link_to(link.name, link.url) %></li> 
<% end -%> 
+0

非常感謝 – Leahcim 2012-07-11 06:59:37

相關問題