我正在关注 Ryan Bates 的 railcasts:http: //railscasts.com/episodes/37-simple-search-form 在使用 will-paginate 的页面上解决我的搜索结果问题。
在这里,他回答了如何解决这个问题的问题。但是,我已经尝试过它们并且没有任何运气。根据他的第二个解决方案,我得到“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
他的回答:
一种方法是调用类方法“search_conditions”,而不是让它进行查找,它只会返回一个条件数组,以便您可以在分页方法中使用它。
Course.paginate(:all, :conditions => Course.search_conditions(..))
另一种是调用方法“paginated_search”并让它调用“paginate”而不是“find”。
最后,您可以让搜索方法接受一个使用 with_scope 设置查找条件的块。这样,您可以在该块中调用“分页”,并且将自动应用条件。
有人可以向我解释我应该如何解决这个问题吗?我是 Rails 新手,也许我只是误解了他在说什么。