Dynami c запрос в ruby на рельсы через ajax вызов - PullRequest
0 голосов
/ 09 апреля 2020

Я запускаю приложение ruby на rails и хочу выполнить запрос к базе данных PSQL и получить возвращенную информацию.

Моя задача - сделать запрос к базе данных динамическим c на основе параметров, которые я включаю в мой ajax -call.

Вот мой ajax скрипт, запрашивающий выполнение запроса.

<script type="text/javascript">
  $('#testyo').click(function(){ 
    console.log('testyo')
    $.ajax({
      type: "GET",
      data: {
        request_params: {
            name : 'test_name'
        },
        receive_params: ["description", "price_per_ha", "price_minimum"]
      },
      dataType: "json",
      url: "/client/products.json",
      success: function(data){
        console.log(data)
        // let response = JSON.parse(data);
        // displayResult(response,1);
      }
    });
    return false;
  });
</script>

вот мой контроллер, который обрабатывает запрос , это рабочий код.

  before_action :set_product, only: [:show, :edit, :update, :destroy]
  def index

    puts params[:request_params]
    puts params[:receive_params]

    # HERE I HAVE A CHALLENGE:

    products = Product.where( name: params[:request_params][:name] )
               .select(:description, :price_per_ha, :price_minimum)

    respond_to do |format|
      format.json { render json: products }
    end
  end
end

В строке Product.where(XXX).select(YYY) я хочу получить код динамически, используя параметры, которые я передаю вместе с запросом.

Сегодня мы только передаем name к запросу на .where( name: params[:request_params][:name] ), но в будущем мы могли бы также передать country. Вместо жесткого кодирования это было бы замечательно, если бы был способ заменить XXX чем-то динамическим c, которое извлекает переменные запроса из params[request_params]

То же самое относится к YYY. Сегодня я сделал select(:description, :price_per_ha, :price_minimum), но на самом деле он должен использовать массив params[:receive_params], чтобы отфильтровать только подмножество атрибутов объекта.

Спасибо за помощь!

...