我试图在索引中使用两个if语句。第一个允许用户按标签查看,第二个定义Kaminari分页宝石gem 'kaminari'
。
问题是,我无法兼顾两者。使用下面的代码,分页工作,但按标签过滤不起作用。如果我注释掉分页,则标签可以正常工作。
我很确定我没有关于两个if语句的正确逻辑,但我无法弄清楚如何正确理解这一点。
class CoffeeshopsController < ApplicationController
def index
if params[:tag]
@coffeeshops = Coffeeshop.tagged_with(params[:tag])
else
@coffeeshops = Coffeeshop.all.order("created_at DESC").page params[:page]
end
if params[:term]
@coffeeshops = Coffeeshop.search_by_full_name(params[:term])
else
@coffeeshops = Coffeeshop.all.order("created_at DESC").page params[:page]
end
end
答案 0 :(得分:1)
您在第二个if
块中覆盖了@coffeshops。话虽如此,你应该在所有过滤之后加入分页。
def index
@coffeeshops = Coffeeshop.all
if params[:tag]
@coffeeshops = @coffeeshops.tagged_with(params[:tag])
end
if params[:term]
@coffeeshops = @coffeeshops.search_by_full_name(params[:term])
end
# paginate
end
答案 1 :(得分:0)
用下面解决它。感谢另一个SO问题。
def index
if params[:tag]
@coffeeshops = Coffeeshop.tagged_with(params[:tag])
else
@coffeeshops = Coffeeshop.all
end
@coffeeshops = @coffeeshops.order("created_at DESC").page params[:page]
end
重点我现在也已经删除了搜索术语。