2016-02-01 52 views
1

简单的我无法弄清楚:我有一个Article模型的博客应用程序。在我的welcome#index页面上,我想显示已发布的最后四篇文章的每个标题。Rails中的基本逻辑

class WelcomeController < ApplicationController 

def index 
    @articles = Article.all 
end 
end 

在我看来,我需要每个标题分别显示在相应的html'box'中。对于第一个冠军,我写了下面的代码:

%title #{ @articles.last(1).title } 

对于我得到一个undefined method 'title'错误。

任何想法为什么发生?

+1

使用@articles = Article.last(4)获得最后4个帖子,然后遍历所有人获得标题。 – Imran

+0

好的,那很好。如何分别迭代每个标题? – Liroy

+2

@liroy只需使用'.each'方法 –

回答

2

@articles.last(1)给出Array内的最后一篇文章,如:

[ #<Artile id: ..> ] 

所以,你需要做的像@articles.last(1).first.title

如果你对文章的最后真的有兴趣,你可以做简单的,如:

@articles.last.title 

因为@articles.last让你直接在文章的对象:

#<Article id: ..> 

要迭代,您将使用.each如:

- @articles.each do |article| 
    %title #{ article.title } 

填充@articles在你的控制器,如:

@articles = Article.order('updated_at asc').last(4) 
+0

每个循环将我的html元素乘以四!为什么会发生? – Liroy

+1

@liroy在单独的问题中显示您的HTML代码..我们将帮助您 –

1

除了伊姆兰和奥雅纳的答案,如果你真的只需要标题栏你可以查询它像这样@articles = Article.last(4).pluck(:title)

1

我觉得如果你的代码

@articles = Article.order('updated_at asc').last(4) # Controller 

查看

<% @articles.each do |title| %> 
    <%= title.title %> #-> print last 4 title 
<% end %> 

希望能帮助你