2017-07-28 20 views
1

私はRuby on Railsの新機能です.Funkoポップのコレクターがログインして、それらが持っているFunkoポップを記録できるアプリケーションに取り組んでいます。それは非常に簡単です、そして、funkos自体についての情報を入力するためのフィールドがいくつかあります。タイトル、説明、カテゴリ、funkoの画像をアップロードする機能により、ユーザのホーム画面は、すべてのファンコが棚のように表示されます。ユーザーごとにカテゴリごとに投稿を並べ替えるにはどうすればよいですか?

ANYWAY。私は機能が組み込まれているので、ユーザは自分のホーム画面をカテゴリ別に並べ替えることができるので、ユーザがドロップダウンをクリックして「Marvel」を選択すると、Marvel funkoのすべてのポップが表示されるはずです。カテゴリに「驚異」のFunkosがない場合、このカテゴリにはFunkosが存在しないというメッセージが表示されます。この機能は完全に機能しますが、新しいユーザーを作成してサインインし、カテゴリ別に並べ替えると、選択したカテゴリのすべてのFunkosがで表示されますが、すべてのユーザーはとなります。

ユーザーごとにカテゴリ別にFunkosを表示できるようにするため、ユーザーが入力したすべてのFunkosはカテゴリドロップダウンリストを使用して並べ替える必要があります。ここで

は、メインコントローラ用のコードです:

class FunkosController < ApplicationController 
before_action :find_funko, only:[:show, :edit, :update, :destroy] 

def index 
    if user_signed_in? && params[:category].blank? 
     @funkos = Funko.where(:user_id => current_user.id).all.order("created_at DESC") 
    elsif params[:category].present? 
     @category_id = Category.find_by(name: params[:category]).id      
     @funkos = Funko.where(:category_id => @category_id).order("created_at DESC") 
    else 
    end 
end 

def show 
end 

def new 
    @funko = current_user.funko.build 
    @categories = Category.all.map{ |c| [c.name, c.id]} 
end 

def create 
    @funko = current_user.funko.build(funko_params) 
    @funko.category_id = params[:category_id] 
    if @funko.save 
     redirect_to root_path 
    else 
     render 'new' 
    end 
end 

def edit 
    @categories = Category.all.map{ |c| [c.name, c.id]} 
end 

def update 
    @funko.category_id = params[:category_id] 
    if @funko.update(funko_params) 
     redirect_to funko_path(@funko) 
    else 
     render 'edit' 
    end 
end 

def destroy 
    @funko.destroy 
    redirect_to root_path 
end 

private 
    def funko_params 
     params.require(:funko).permit(:title, :description, :category_id, :funko_img) 
    end 

    def find_funko 
     @funko = Funko.find(params[:id]) 
    end 
end 

うまくいけば、ここでの私の最初のポスト/質問は私が探している答えを得るために明確かつ十分に簡潔です!私は、新しいユーザーを作成してサインインし、カテゴリ別にソートするとき

おかげ

トム

答えて

1

はしかし、それ は、選択したカテゴリではなく、すべてのユーザーに対してFunkosのすべてを示しています。

問題はparams[:category]が存在する場合は、ユーザーごとにfunkosを取得していないここに

@funkos = Funko.where(:category_id => @category_id).order("created_at DESC") 

に位置しています。それを加えて、あなたはうまくいくよ。

@funkos = Funko.where(:category_id => @category_id, :user_id => current_user.id).order("created_at DESC") 
+1

素晴らしい。どうもありがとうございます! –

関連する問題