Rails中的基本逻辑

时间:2016-02-01 07:32:08

标签: ruby-on-rails view controller

我无法理解的简单方法:我有一个带有Article模型的博客应用。在我的welcome#index页面上,我想显示最近发布的四篇文章的每个标题。

class WelcomeController < ApplicationController

def index
    @articles = Article.all
end
end

在我看来,我需要将每个标题分别显示在相应的html&#39;框中。对于第一个标题,我写了以下代码:

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

我收到undefined method 'title'错误。

知道为什么会这样吗?

3 个答案:

答案 0 :(得分: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)

答案 1 :(得分:1)

除了Imran和Arup的回答,如果你真的需要标题栏,你可以像@articles = Article.last(4).pluck(:title)

一样查询

答案 2 :(得分:1)

我认为应该是你的代码

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

查看

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

希望能帮到你