Ruby on rails 在show method中包括最近记录的列表

Ruby on rails 在show method中包括最近记录的列表,ruby-on-rails,Ruby On Rails,当有人在我的Rails应用程序中查看某篇文章时,我会尝试添加一些其他最近的文章 我的控制器中有以下方法: def show @article = Article.find(params[:id]) @recents = Article.where(!@article).order("created_at DESC").limit(4).offset(1) end def show @article = Article.find(params[:id]) @recent = Ar

当有人在我的Rails应用程序中查看某篇文章时,我会尝试添加一些其他最近的文章

我的控制器中有以下方法:

def show
  @article = Article.find(params[:id])
  @recents = Article.where(!@article).order("created_at DESC").limit(4).offset(1)
end
def show
  @article = Article.find(params[:id])
  @recent = Article.recent(@article.id)
end
正如专家们可能看到的那样,@recents是不正确的。这是我最好的猜测


如何显示一些最近的文章,但不重复他们当前正在查看的文章?

尝试使用
@recents=Article.where.not(id:@Article.id).order(“created_at DESC”).limit(4)
尝试使用
@recents=Article.where.not(id:@Article.id).order(“created_at DESC”).limit(4)

尝试
@recents=Article.where.not(id:@Article.id).订单(“在描述时创建”).limit(4)
尝试
@recents=Article.where.not(id:@Article.id).订单(“在描述时创建”).limit(4)
第2.4节:)。 我认为有一种方法可以只打一个电话,而不是像现在这样打两个

第2.4节:)。 我认为有一种方法可以只打一个电话,而不是像现在这样打两个

第2.4节:)。 我认为有一种方法可以只打一个电话,而不是像现在这样打两个

第2.4节:)。
我认为有一种方法可以只打一个电话,而不是像现在这样打两个

您应该在模型中使用范围,因为它有很多优点。了解范围。您的案例应该是这样的:

在模型中:

class Article < ActiveRecord::Base
  scope :recent, ->(article_id) { where.not(id: article_id).order(created_at: :desc).limit(4) }
end
这样,最近的作用域将始终获得最后四篇文章,而忽略作为参数传入的文章。作用域是可链接的,因此您也可以执行类似的操作:

def some_action
  @user = User.find(params[:user_id])    
  @user_recent_articles = @user.articles.recent(0)
end
您正在获取用户最近的文章。我传递一个零,因为作用域要求一个参数。如果您想以最干净的方式创建一个不同的范围,那么可以创建一个不同的范围。 假设一个用户有很多文章


好吧,希望有帮助

您应该在模型中使用范围,因为它有很多优点。了解范围。您的案例应该是这样的:

在模型中:

class Article < ActiveRecord::Base
  scope :recent, ->(article_id) { where.not(id: article_id).order(created_at: :desc).limit(4) }
end
这样,最近的作用域将始终获得最后四篇文章,而忽略作为参数传入的文章。作用域是可链接的,因此您也可以执行类似的操作:

def some_action
  @user = User.find(params[:user_id])    
  @user_recent_articles = @user.articles.recent(0)
end
您正在获取用户最近的文章。我传递一个零,因为作用域要求一个参数。如果您想以最干净的方式创建一个不同的范围,那么可以创建一个不同的范围。 假设一个用户有很多文章


好吧,希望有帮助

您应该在模型中使用范围,因为它有很多优点。了解范围。您的案例应该是这样的:

在模型中:

class Article < ActiveRecord::Base
  scope :recent, ->(article_id) { where.not(id: article_id).order(created_at: :desc).limit(4) }
end
这样,最近的作用域将始终获得最后四篇文章,而忽略作为参数传入的文章。作用域是可链接的,因此您也可以执行类似的操作:

def some_action
  @user = User.find(params[:user_id])    
  @user_recent_articles = @user.articles.recent(0)
end
您正在获取用户最近的文章。我传递一个零,因为作用域要求一个参数。如果您想以最干净的方式创建一个不同的范围,那么可以创建一个不同的范围。 假设一个用户有很多文章


好吧,希望有帮助

您应该在模型中使用范围,因为它有很多优点。了解范围。您的案例应该是这样的:

在模型中:

class Article < ActiveRecord::Base
  scope :recent, ->(article_id) { where.not(id: article_id).order(created_at: :desc).limit(4) }
end
这样,最近的作用域将始终获得最后四篇文章,而忽略作为参数传入的文章。作用域是可链接的,因此您也可以执行类似的操作:

def some_action
  @user = User.find(params[:user_id])    
  @user_recent_articles = @user.articles.recent(0)
end
您正在获取用户最近的文章。我传递一个零,因为作用域要求一个参数。如果您想以最干净的方式创建一个不同的范围,那么可以创建一个不同的范围。 假设一个用户有很多文章

好吧,希望有帮助