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
是否可以让 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