我正在關注Ryan Bates的railcasts:http://railscasts.com/episodes/37-simple-search-form 解決了我的問題,在頁面上使用will-paginate進行搜索。如何實現與paginate結合使用的簡單搜索表單?
在這裏他回答瞭如何解決這個問題的問題。不過,我已經嘗試過,並沒有任何運氣。從他的第二個解決方案開始,我得到了一個NoMethod錯誤,作爲結果「search_conditions」。
驗證碼:
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
他的答案:
一種方法是調用類的方法「search_conditions」,而是有它做的發現它只會返回一個條件,數組,所以你能在paginate方法中使用它。
Course.paginate(:所有,:條件=> Course.search_conditions(..))
另一個是調用方法 「paginated_search」,並將它稱爲 「分頁」 而不是 「找到」。
最後,您可以讓搜索方法接受使用with_scope設置查找條件的塊。通過這種方式,您可以在該塊中調用「分頁」,並自動應用條件。
有人可以向我解釋我應該如何解決這個問題嗎?我是新來的鐵桿,也許我只是誤解他在說什麼。
卡哦!這工作完美!謝謝! – Tony
而不是實現像思維獅身人面像這樣的系統,是否可以更改用戶可以搜索數據庫中所有字符串/列實例的代碼?例如'哪裏'一年?',「%#{search}%」'允許我搜索字符串「year」(但僅限那個字符串)。但是,我希望搜索在單個搜索中查找「年」和「名稱」,並添加其他字符串。 – Tony
@Tony是的,有可能:'where'year LIKE:search OR name LIKE:search',:search =>「%#{search}%」' –