2017-04-27 10 views
1

2つの.eachを同じビュー上に表示することは可能ですか?彼らはさまざまな検索をしていますか?Rails:同じビューで2つの異なるdoループを持つことは可能ですか?

たとえば、特定の1人のユーザーが投稿したすべての投稿を表示する場合は、私は、ユーザーのコントローラで、次のアクションを持っているでしょう:

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

は、次にビューに私が持っているでしょう:

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

をそれから私は、同じビュー上の他のユーザーによって投稿を表示したい場合。特定のユーザーの投稿を検索するためだけに、上記の方法を使用しないでください。

私は新しいアクションを作成しますか?次のような 何か:

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

どのように私はこれを達成するであろう:

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

そして、バックビューページで私はこの1つのようなSHOWALLアクションであることを別のeach.doを持っているでしょうか?これはアクションを使用する正しい方法ですか?

+0

'@posts =(@user == CURRENT_USER)ビューでそれらをループ? @ user.posts:Post.where(:attribute => value).order( "created_at DESC")あなたの表示アクションでこれを試してください –

+0

おそらく、データを表示したいユーザーには、ある種の接続があります。個々のユーザーを1行ずつ見つけ出すのではなく、最初に共通のリンク(例:User.where(something:true))でユーザーを探し、それをループします。 – bkunzi01

答えて

1

はい、あなたは同じアクション自体

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 
関連する問題