2015-09-06 59 views
-3

我是新的rails和編程。如何使這個控制器在Rails中正常工作

我的ads_controller.rb有問題,一個params [:category]按類別選擇廣告,params [:search]按搜索選擇分類。

如何加入此togheter,使其工作?

def index 

    if params[:category].blank? 
    @ads = Ad.all.order("created_at DESC").paginate(:page => params[:page], :per_page => 10) 
    else 
    @category_id = Category.find_by(name: params[:category]).id 
    @ads = Ad.where(category_id: @category_id).order("created_at DESC").paginate(:page => params[:page]) 
    end 

    if params[:search] 
    @ads = Ad.search(params[:search]).order("created_at DESC").paginate(:page => params[:page], :per_page => 10) 
    else 
    @ads = Ad.order("created_at DESC").paginate(:page => params[:page]) 
    end 

end 

回答

0

您的代碼非常混亂。而且,你所要求的基本Ruby和Rails技能很容易實現。我鼓勵你在開始使用之前閱讀一些關於語言和框架的書。

這裏是一個可能的解決方案

@ads = Ad.order("created_at DESC") 
@ads = @ads.joins(:category).where(categories: { name: params[:category] }) if params[:category].present? 
@ads = @ads.search(params[:search]) if params[:search].present? 
@ads = @ads.paginate(page: params[:page], per_page: 10) 
+0

這是完美的作品。非常感謝。是的,肯定需要閱讀一些。你推薦任何specyfic書嗎? – DisplayName

相關問題