Динамические запросы с 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