2016-12-21 2 views
0

привет, так что я пытаюсь сделать 2 вещи, один из них состоит в основном переадресовать на номер Идентификатор модели так вход «1» и перенаправляетRoR: Попытка Поиск по номеру или номер лицензии

localhost:3000/model/1 

и вторая часть на самом деле делает поиск. у каждой модели есть строка текстового поля для license_no, и я хочу иметь возможность искать и возвращать результаты.
В настоящее время я не уверен, как бы я объединил их в одну форму поиска, если это возможно, или если для этого потребуется две отдельные формы поиска
У меня есть форма поиска только с полем license_no, но она всегда возвращает результат не найден ...
извините, что имя модели не в единственном числе, руководство, которое я использовал, чтобы изучить RoR, было так, и все работало, но у меня есть так много ссылок на квартиросъемщик в моем проекте, что это было бы некоторое время, чтобы найти их все

index.html.erb

<%= form_tag search_renters_path, method: get do |f| %> 
    <%= text_field_tag :license, nil, placeholder: "License Number" %> 
    <%= submit_tag 'Search', class: "btn-large" %> 
<% end %> 

модели/renters.rb

class Renters < ActiveRecord::Base 
    validates_presence_of :license_no 
    def self.search(params) 
     renters = Renters.where("license_no LIKE?", "%#{params[:license]}%") 
    end 
end 

controller.rb

def search 
    @renter = Renters.search([params]) 
end 

search.html.erb - фрагмент кода

<% if @renter.blank? %> 
    no results 
<% else %> 
    #show results 
<% end %> 

Editted код
модели/renters.rb

def self.search(params) 
    license_query = "%#{params[:license]}%" 
    id_query = "%#{params[:id]}%" 
    renters = Renters.where("license_no LIKE ?", license_query) if params[:license].present? 
    renters = Renters.where("id LIKE ?", id_query) if params[:id].present? 
    end 

Контроллер

def search 
    @renter = Renters.search(params) 
end 

форму поиска

<%= form_tag search_renters_path, method: :get do |f| %> 
         <%= text_field_tag :license, nil, placeholder: "Driver's License" %> 
         <%= text_field_tag :id, nil, placeholder: "ID number" %> 
<% end %> 

Я пытаюсь использовать, если присутствует? чтобы пользователь мог решить, следует ли вводить номер ID или номер лицензии, вам не нужно вводить только один. В настоящее время, если я ищу лицензию нет, она не возвращает никаких результатов. но когда я ищу для ID, он возвращает соответствующий результат

+1

попробуйте с '@renter = Renters.search (params) ' –

ответ

0

вы можете сделать что-то вроде этого, если вы получаете значение на params[:licence] от вашей подчиненной формы на ваши действия контроллера search

controller.rb

def search 
    @renter = Renters.search(params[:licence]) 
end 

приложение/модели/renters.rb

class Renters < ActiveRecord::Base 
    def self.search(query) 
    like_query = "%#{query}%" 
    renters = Renters.where("id LIKE ? OR license_no LIKE ?", like_query, like_query) 
    end 
end 
+0

спасибо, я думаю, что это правильный трек, но я хотел бы иметь 2 разных поисковых запроса, поэтому, если вы знаете номер лицензии, вы можете заполнить это поле ИЛИ, если вы знаете номер ID, который вы заполняете один, но обычно не оба поля. Я думаю, что этот способ требует, чтобы оба поля были обысканы? – fazi13

+0

okay .. как вы узнаете, что из одного текстового поля (отправленного как 'params [: license]') в вашей форме поиска? – sa77

+0

Извините, я не знал, как реализовать второе поле поиска в то время, я добавил '<% = text_field_tag: id, nil, placeholder:" ID Number "%>' – fazi13

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