我无法理解的简单方法:我有一个带有Article
模型的博客应用。在我的welcome#index
页面上,我想显示最近发布的四篇文章的每个标题。
class WelcomeController < ApplicationController
def index
@articles = Article.all
end
end
在我看来,我需要将每个标题分别显示在相应的html&#39;框中。对于第一个标题,我写了以下代码:
%title #{ @articles.last(1).title }
我收到undefined method 'title'
错误。
知道为什么会这样吗?
答案 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 %>
希望能帮到你