如何实现简单的搜索表单,以便与分页结合使用



我在关注Ryan Bates的广播:http://railscasts.com/episodes/37-simple-search-form在解决我的问题与搜索结果的页面将分页

在这里他回答了如何解决这个问题。然而,我试过了,没有任何运气。从遵循他的第二个决议,我得到一个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方法中使用它。

课程。paginate(:all,:conditions => Course.search_conditions(..))

另一种方法是调用"paginated_search"方法,并让它调用"paginate"而不是"find"。

最后,您可以让搜索方法接受使用with_scope设置查找条件的块。这样,你就可以在该块中调用"paginate",条件就会自动应用。

谁能给我解释一下我应该怎么解决这个问题?我是rails的新手,也许我只是误解了他说的话。

您所关注的Railscast是相当古老的,从那时起发生了很多变化。尝试像这样改变search方法的实现:

def self.search(search)
  if search
    where 'name LIKE ?', "%#{search}%"
  else
    scoped
  end
end

和类似的controller:

def index
  @projects = Project.search(params[:search]).paginate(:page => params[:page])
end

相关内容

  • 没有找到相关文章

最新更新