文章列表还显示View中所有文章的数据库信息

时间:2016-01-20 13:19:54

标签: ruby-on-rails ruby

我在做Jumpstart教程,你必须在ruby on 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

如果发生这种情况,我将不胜感激。

3 个答案:

答案 0 :(得分:1)

取出循环的=标志 所以:  <% @articles.each do |article| %>

答案 1 :(得分:0)

在嵌入式Ruby(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

答案 2 :(得分:0)

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

在开始时用2天的相同问题挣扎。