2016-01-20 27 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天。