Динамические запросы с JavaScript

В настоящее время я пишу простое приложение на Ruby, которое позволяет пользователям устанавливать предпочтения местоположения в спортзале, а также предпочтения доступности - логические значения дней недели и утра / дня / вечера.

Индекс пользователя

 <select id="myselect"></select>
 <script>
    queries = {
        'time': 'Afternoon',
        'day': 'Monday'
    }


    $.ajax({
        url: '/users.json',
        type: 'GET',
        data: {
            search: queries
        },
        dataType: 'json',
        success: function(json) {
            //console.debug(json)
            $.each(json.users, function(index, value) {
                $('#myselect').append($('<option>').text(value.name).attr('value', value.id));
            });
        }
    });
</script>

Модель пользователя

class User < ActiveRecord::Base
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable, :confirmable
has_many :places

def completed_profile?
%w( name email encrypted_password bio).all? { |attr| send(attr).present? }
end

def self.search(queries)
users = User.all

 if queries["time"]
   case queries["time"]
   when "Morning"
     users = users.where(morning: true)        
   when "Afternoon"
     users = users.where(afternoon: true)          
   end
 end
if queries["day"]
  case queries["day"]
  when "Monday"
    users = users.where(monday: true)
  end
end


users

end

end

Может ли кто-нибудь указать мне правильное направление с точки зрения настройки динамического запроса JavaScript в представлении индекса? Я бы хотел, чтобы пользователь сам установил значение 'query', но я изучаю javascript по мере продвижения, поэтому это был медленный шаг.

Спасибо

1 ответ

Замените следующий метод

def self.search(queries)
  users = User.all

  if queries["time"]
   case queries["time"]
     when "Morning"
       users = users.where(morning: true)        
     when "Afternoon"
       users = users.where(afternoon: true)          
     end
  end
  if queries["day"]
    case queries["day"]
      when "Monday"
        users = users.where(monday: true)
      end
  end
  users
end

с,

def self.search(queries)  
  users = User.all
  if queries["time"]
    users = users.where("#{queries['time'].downcase} = ? ",true)
  end
  if queries["day"]
    users = users.where("#{queries['day'].downcase} = ? ",true)
  end
  users
end
Другие вопросы по тегам