2013-07-09 4 views
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 

Искомое предмет теперь отображается в новой странице поиска. Но мне нужно отобразить искомый элемент на той же странице индекса. Какое решение?

ответ

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]) 
+0

Благодарим вас за немедленный ответ. –

0

Вы можете использовать камень поиска meta для вашего метода индекса, это выглядит как вещь это -

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

В этом случае, если параметры поиска присутствуют он будет искать в таблице еще он возвращает все записи из таблицы.

Смежные вопросы