私はライアン・ベイツのレールキャストをフォローしています:http://railscasts.com/episodes/37-simple-search-formは 、will-paginateのあるページの検索結果に関する問題を解決しています。
ここで彼はこの問題をどのように解決するかについての質問に答えます。しかし、私はそれらを試しましたが、運がありませんでした。彼の2番目の解決策に従うと、結果として「search_conditions」のNoMethodエラーが発生します。
コード:
projects/index.rhtml
<% form_tag projects_path, :method => 'get' do %>
<p>
<%= text_field_tag :search, params[:search] %>
<%= submit_tag "Search", :name => nil %>
</p>
<% end %>
projects_controller.rb
def index
@projects = Project.search(params[:search])
end
models/project.rb
def self.search(search)
if search
find(:all, :conditions => ['name LIKE ?', "%#{search}%"])
else
find(:all)
end
end
彼の答え:
1つの方法は、クラスメソッド「search_conditions」を呼び出すことです。検索を実行する代わりに、条件配列を返すだけなので、paginateメソッドで使用できます。
Course.paginate(:all、:conditions => Course.search_conditions(..))
もう1つは、メソッド「paginated_search」を呼び出し、「find」ではなく「paginate」を呼び出すようにすることです。
最後に、with_scopeを使用して検索条件を設定するブロックを検索メソッドに受け入れさせることができます。このようにして、そのブロックで「ページ付け」を呼び出すことができ、条件が自動的に適用されます。
誰かが私にこれを解決する方法を説明できますか?私はレールに不慣れで、彼の言っていることを誤解しているだけかもしれません。