Controller Rails 5控制器中的多个IF语句

Controller Rails 5控制器中的多个IF语句,controller,ruby-on-rails-5,kaminari,Controller,Ruby On Rails 5,Kaminari,我试图在索引中使用两个if语句。第一个允许用户按标签查看,第二个定义Kaminari分页gem,gem'Kaminari' 问题是,我不能让两者都工作。使用下面的代码,分页可以工作,但按标记过滤不能。如果我注释掉分页,则标记可以工作 我相当肯定我没有关于这两个if语句的正确逻辑,但我不知道如何纠正这一点 class CoffeeshopsController < ApplicationController def index if params[:tag] @c

我试图在索引中使用两个if语句。第一个允许用户按标签查看,第二个定义Kaminari分页gem,
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
class CoffeeshopsController
您正在第二个
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

用下面的方法解决了它。多亏了另一个问题

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

重要的一点,我现在已经删除了搜索词声明。

好的,有意义。然而,在我看来,调用
时,我现在得到了
未定义的方法
总页数'`。