Rails:Is 可以在同一个视图上有 2 个不同的每个 do 循环吗?

Rails:Is it possible to have 2 different each do loops on the same view?

是否可以让 2 个 .each 在同一个视图上执行。他们进行不同的搜索?

例如,如果我想显示某个特定用户发布的所有帖子。我将在我的用户控制器中执行以下操作:

def show
  @user = User.find(params[:id])
  @posts = @user.posts
end

然后在视图中我会:

- @posts.each do |post|
   =post.title

然后如果我想在同一视图上显示其他用户的帖子。使用上面的方法不会起作用,因为它只搜索特定用户的帖子。

然后我会创建一个新动作吗? 类似于以下内容:

def showAll
  @user = User.find(params[:id])
  @posts = Post.where(:attribute => value).order("created_at DESC")
end

然后回到视图页面,我会得到另一个 each.do,这个是 showAll 操作,例如:

- @posts.each do |post|
   =post.title

我将如何实现这一目标?这是使用动作的正确方法吗?

是的,您可以在同一操作中执行此操作

def show
  @posts = current_user.posts
  @other_posts = Post.where(:attribute => value).order("created_at DESC")
  # OR
  # @other_posts = Post.where.not(id: @posts).order("created_at DESC")
end

然后你可以在视图中遍历它们

%h2 Your posts
- @posts.each do |post|
   = post.title

%h2 Posts from other users
- @other_posts.each do |post|
   = post.title