我在做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
如果发生这种情况,我将不胜感激。
答案 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天的相同问题挣扎。