Как использовать params, где запрос - Ruby? - PullRequest
0 голосов
/ 27 мая 2018

У меня есть ajax GET-запрос, который отправляется на контроллер Rails и возвращает список местоположений.

Пользователь должен иметь возможность передавать как можно больше параметров для поиска.Я не могу понять, как сделать запрос where с переданными параметрами.Пользователь может передать один параметр или несколько параметров.

         return $.ajax({
            type: "GET",
            url: '/map_view_locations',
            data: {
                'location': {
                    'waitlist': true,
                }
            },
            success: function(locations)   {
                console.log(locations)
            }
          })

И в контроллере:

 def map_view_locations
    puts 'params'
    location_params[:location]

    @locations = Location.where(location_params[:location]).includes(:food, :pricing)



    respond_to do |format|
      format.json do
        render json: @locations.to_json(:include => [:food, :pricing])
      end
    end
  end

Возвращает все местоположения и не учитывает переданные параметрыв. Что мне здесь не хватает?

Спасибо!

Ответы [ 2 ]

0 голосов
/ 27 мая 2018

Где предложение поддерживает несколько параметров с помощью хэша, например,

where(param1: value1, param2: value2)

В вашем случае я вижу, что вы используете метод location_params.Я думаю, что выглядит примерно так:

def location_params
  params.require(:location).permit(:waitlist)
end

Итак, ваш location_params метод возвращает этот хеш:

{ waitlist: true }

Когда вы вызываете location_params[:location], он дает вам nil, тем самым where предложение игнорируется.

Попробуйте

Location.where(location_params)

Вместо

Location.where(location_params[:location])

Я думаю, что это должно работать

0 голосов
/ 27 мая 2018

Если я правильно понимаю ваш вопрос, может, это укажет вам правильное направление?

property = params[:location].first
value = params[:location].last
Location.where("#{property} like ?", value).includes(:food, :pricing)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...