在同一页面中显示搜索的项目

时间:2013-07-09 09:56:38

标签: ruby-on-rails

srches_controller中的以下代码

def index
   @srches = Srch.all
   respond_to do |format|
     format.html # index.html.erb
     format.json { render :json => @srches }
end
. 
.
.
def search
    @srch=Srch.find(:all,
                :conditions => ["name LIKE ? OR address LIKE ?", "%#{params[:search]}%", "%#{params[:search]}%"])
end

搜索到的项目现在显示在新的搜索页面中。 但我需要在同一索引页面中显示搜索的项目。 解决方案是什么?

2 个答案:

答案 0 :(得分:0)

您可以将参数search传递到索引页面并使用以下内容搜索结果:

def index
  @srches = Srch.scoped
  if params[:search].present?
    @srches = @srches.where(['name LIKE ? OR address LIKE ?', "%#{params[:search]}%", "%#{params[:search]}%"])
  end
  respond_to do |format|
    format.html
    format.json { render :json => @srches }
  end
end

或者您可以在模型中设置范围:

scope :search, lambda{|query|
  if query.present?
    where(['name LIKE ? OR address LIKE ?', "%#{query}%", "%#{query}%"])
  end
}

并在控制器中调用:

@srches = Srch.search(params[:search])

答案 1 :(得分:0)

您可以使用元搜索gem作为索引方法,它看起来像这样 -

def index
   @srches = Srch.search(params[:search])
   respond_to do |format|
     format.html # index.html.erb
     format.json { render :json => @srches }
end

在这种情况下,如果搜索参数存在,它将在您的表中搜索,否则它将返回您表中的所有记录。