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
搜索到的项目现在显示在新的搜索页面中。 但我需要在同一索引页面中显示搜索的项目。 解决方案是什么?
答案 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
在这种情况下,如果搜索参数存在,它将在您的表中搜索,否则它将返回您表中的所有记录。