2016-01-20 177 views
0

我在做Jumpstart教程,您必須在rails上創建一個博客。它進展良好,但我沒有設法弄清楚一件事。 根頁面應該顯示文章列表。它確實如此。只有它也表明了這額外位: Article list and unwanted part at the bottom文章列表還顯示查看所有文章的數據庫信息

我在查看代碼:

<h1> All Articles </h1> 


<ul id="articles"> 
    <%= @articles.each do |article| %> 
     <li> 
      <%= link_to article.title, article_path(article), class: 'article_title' %> 
     </li> 
    <% end %> 
</ul> 

<%= link_to "Create New Article", new_article_path, class: 'new_article' %> 

這裏是在控制器的相關代碼

def index 
    @articles = Article.all 
end 

我希望得到任何幫助爲什麼會發生這種情況。

回答

0

在嵌入式紅寶石(ERB),<% %><%= %>之間的區別不是簡單的化妝品;後者實際上將該行代碼的結果打印到html中。因此,在您的行中:

<%= @articles.each do |article| %> 

...您實際上正在打印運行該行代碼並顯示它的結果。或者,更具體地說,您正在顯示循環本身,而不僅僅是循環通過@articles集合的結果。使用<%= %>表示法會隨意地使用很多亂碼。只要看看你在控制檯/調試器中玩耍的時間;運行這些代碼會產生很多噪音!

解決您的問題,您遍歷@articles應該簡單地是這樣的:

# No "=" here! 
<% @articles.each do |article| %> 
    <li> 
     <%= link_to article.title, article_path(article), class: 'article_title' %> 
    </li> 
<% end %> 

有關ERB語法的更多信息,請here

對於另一個堆棧溢出問題,包括這個和一些附加的表示法,請看here

+0

謝謝!我沒有看到它,但我甚至不知道它是如何影響我的代碼的,即使我有! –

1

拿出你的循環=標誌 所以: <% @articles.each do |article| %>

0
<% @articles.each do |article| %> 
    <%= content_tag :li, link_to(article.title, article, class: 'article_title') %> 
<% end %> 

開始時在相同的問題上掙扎2天。