私は開発者によって私のために構築された小さなRailsアプリを持っています、そしてコードには私が修正しようとしている多くの異常があります。will_paginateで奇妙な問題と戦っていて、次のエラーが発生します。
The @home variable appears to be empty. Did you forget to pass the collection object for will_paginate?`
私はエラーメッセージをグーグルで検索しましたが、この問題を解決するのに役立つものは何も見つかりませんでした。そこで、stackoverflowに目を向けます。
したがって、場所を見つけるための私の検索フォームは次のようになります。
<%= form_for :search_place, :url => search_results_home_index_path, :html => {:class=>""} do |f| %>
<%= f.hidden_field :search_type, :value=>2 %>
<%= f.text_field :city,{:placeholder => "Town", :class=>"input-small"} %>
<%= f.text_field :county,{:placeholder => "County", :class=>"input-medium"} %>
<%= f.select(:country, db_countries.map(&:country), {:include_blank => 'Select a Country'}, :class=>"input-medium") %>
<%end%>
これは、home_controller.rbをそのように参照します。
def search_results
:
elsif !params[:search_place].blank?
session[:search_params] = params[:search_place]
@documents = Location.search_location(params[:search_place], params[:page])
end
そして、ロケーションモデルlocation.rbからコレクションを取得します
def self.search_location(search_params,page,per_page=50)
condition_str = ""
condition_str += "(UPPER(locations.town) like '%#{search_params[:city].upcase}%' OR UPPER(locations.town) like '%#{search_params[:city].upcase}%') AND " unless search_params[:city].blank?
condition_str += "(UPPER(locations.county) like '%#{search_params[:county].upcase}%' OR UPPER(locations.county) like '%#{search_params[:county].upcase}%') AND " unless search_params[:county].blank?
condition_str += "(UPPER(locations.country) like '%#{search_params[:country].upcase}%' OR UPPER(locations.country) like '%#{search_params[:country].upcase}%') " unless search_params[:country].blank?
unless condition_str.blank?
self.where(condition_str).paginate(:per_page=>per_page,:page=>page)
else
self.where("1=0").paginate(:per_page=>1,:page=>page)
end
end
検索結果は、次のように検索結果テーブルに表示されます。
<%= render "documents/document_common_list"%>
<%= will_paginate @documents, :renderer => BootstrapLinkRenderer %>
したがって、これは正しい検索結果を引き出し、正しい最初のページとページングブロックを表示しますが、他のページにアクセスしようとすると、上記のエラー(@homeについて)でクラッシュします。
will_paginateは、コレクションがモデルではなくコントローラーに組み込まれていることを除いて、この方法でサイトの他の場所で完全に機能するため、これが問題になる可能性があります(これを行う正しい方法は完全にはわかりませんが、作業中です他の誰かのコードで少し苦労しています)。
どんなポインターでも私を正しい方向に動かすことができてとてもありがたいです