Ruby on rails 在控制器中使用带条件的分页时出现错误nil

Ruby on rails 在控制器中使用带条件的分页时出现错误nil,ruby-on-rails,ruby,ruby-on-rails-2,Ruby On Rails,Ruby,Ruby On Rails 2,我得到这个错误“nil:NilClass的未定义方法'paginate'” 这是我的桌子: policies id num_policy type_id doc name 1 2323 1 181844 Charles 2 2121 2 151511 Aguardientico 3 3423 2 434344 Benjamin 这

我得到这个错误“nil:NilClass的未定义方法'paginate'”

这是我的桌子:

 policies
   id   num_policy   type_id    doc    name
    1        2323      1       181844  Charles
    2        2121      2       151511  Aguardientico
    3        3423      2       434344  Benjamin
这是我的控制器:

if params[:num_policy].present?
  @search= Policy.find(:all,:conditions=>['num_policy LIKE ?',params[:num_policy] ])
end

if params[:type_id].present?
  @search= Policy.find(:all,:conditions=>['type_id LIKE ?',params[:type_id] ])
end

if params[:doc].present?
  @search= Policy.find(:all,:conditions=>['doc LIKE ?',params[:doc] ])
end

if params[:name].present?
  @search= Policy.find(:all,:conditions=>['name LIKE ?',params[:name] ])
end

if params[:doc].present? and params[:type_id].present?
  @search= Policy.find(:all,:conditions=>['doc LIKE ? and type_id LIKE ?',params[:doc],params[:type_id] ])
end

@policies= @search.paginate( :page => params[:page], :per_page =>2)
这是我的看法

 <% @policies.each do |p| %>
   <%= p.num_policy %>
   <%= p.type_id %>
   <%= p.doc %>
   <%= p.name %>
 <% end %>
有人能帮我吗


我非常感谢您的帮助。

无论您是否使用
paginate
,这两种情况下都会出现错误

似乎您的
@search
是nil(不在任何
if
语句中),它用nil初始化了@policies。因此,它无法在
NilClass
上找到
paginate

更新: 添加行

@search = Policy.all if @search.nil? 

就在
@policies=@search.paginate(:page=>params[:page],:per_page=>2)行的上方


这将验证这一预测。

在你看来,我认为应该是@policies而不是policies。

好吧,我尝试了@search,但也不起作用,似乎条件阻止了某些事情是的。执行此操作:在
@policies=@search.nil?
行的正上方添加
@policies=@search.paginate(:page=>params[:page],:per_page=>2)
和try.well我尝试了@search=Policy.find(:all)和@policies=@search.paginate(:page=>params[:page],:per_page=>2)并开始工作。但是,如果您没有在我想要的条件下工作,那么您必须验证您的条件和要求。尝试使用一些用例进行调试。我们将无法帮助您解决用例:)太好了!!!非常感谢你的帮助。我只需要@search=Policy.all如果@search.nil?明白,谢谢孩子们
 <% @search.each do |p| %>
   <%= p.num_policy %>
   <%= p.type_id %>
   <%= p.doc %>
   <%= p.name %>
 <% end %>
        # define what are the search keys that can be found in params[]
        search_keys = [:a, :b, :c, :d, :e, :f]

        # extract hash values that concern only the search criteria
        search_params = params.select { |k,v| search_keys.include? k and ! v.nil? and ! v.empty? }

        # Write query according to search criteria presents
        case search_params.keys.sort
          when [:a]
            # Write the query when only :a search criteria is present
            Something.where("blahblah = ?", params[:a])
          when [:a, :c]
            # Write the query when only :a and :c search criteria are present
            Something.where("a_field = ? AND stuff = ?", params[:a], params[:c])
          when ...
            ...
        end
@search = Policy.all if @search.nil? 
@search ||= Policy.all