0

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

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

4

2 回答 2

0

您可以将元搜索 gem 用于您的索引方法,它看起来像这样 -

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

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

于 2013-07-09T10:20:12.433 回答
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])
于 2013-07-09T10:10:16.100 回答