Получение пользовательского ввода из формы в бэкэнде (rails 4), которая использует ajax 'get' call при нажатии кнопки поиска

Итак, у меня есть React-компонент (search_alerts.es6.jsx), который выглядит следующим образом

class SearchAlerts extends React.Component {

constructor(props) {
super(props);
console.log(this.props);

this.state = {
  alertsArray: this.props.alerts,
  zipCode: null,
  bloodReq: null,
  minCompensation: null,
  maxCompensation: null,
  requiredTime: null,
  location: null,
  bloodType: null,
  keyWord: null
}

console.log(this.state.alertsArray);
}
........

и вызов ajax, который отвечает за вызов метода get, выглядит следующим образом

  $.ajax({
    data: JSON.stringify(stringit),
    type: "GET",
    url: `/findalerts/`,
    contentType: "application/json",
    dataType: "json",
    success: function(data) {
      console.log("Ajax Passed ");
      console.log(data);

      this.setState({
        alertsArray: data
      });

    }.bind(this),
    error: function(data) {
      console.log("Ajax failed: ");
      console.log(data);
    }.bind(this)
  });

в моем rout.rb, я делаю это

get '/findalerts', to: 'alerts#index' #Search Alerts

и в моем модуле alerts_controller

def index
@alerts = Alert.search(params[:keyword])
end

для поиска я делаю это в alert.rb

def self.search(search)


    @alerts  = Alert.where("ZipCode LIKE :search ", search: "%#{search}%")
    @alerts += Alert.where("compensation LIKE :search ", search: "%#{search}%")

    @alerts += User.search(search)

end

Теперь, если я передам запрос в URL, как это,

http://localhost:3000/findalerts?keyword=117

например, он возвращает все оповещения с почтовым индексом, начинающимся с 117 как json, а компонент реагирования выбирает его и отображает правильно. Мой вопрос: как заставить работать поиск, когда пользователь вводит ключевое слово в форме поиска? Я пробовал другие примеры из переполнения стека, это не сработало, я знаю, что что-то упустил, но не знаю что. Спасибо!

0 ответов

Другие вопросы по тегам