Я использую ajax с рельсами для получения одной случайной строки. Я хочу, чтобы при каждом запросе ajax отображалось всего 10 строк, чтобы получить одну случайную строку и отобразить ее, я пытаюсь что-то подобное, Model.all.sample или Использование смещения с первым но моя проблема заключается в дублировании, как можно избежать этого или как я могу настроить весь ответ, чтобы проверить, отправлял ли я его раньше или нет. неправильно
результат
мой код: - в бэкэнде моя функция
def get_10
arr = params['arr']
if arr.nil?
@rand_record = Phrase.all.sample
else
i = 0
if i < 10
@rand_record = Phrase.all.sample
while(i < arr.length) && (i<10)
flag = arr[i].include?@rand_record.name
if flag
@rand_record = Phrase.all.sample
i = 0
elsif flag == false
return @rand_record
end
i+=1
end
end
end
respond_to do |format|
format.js { }
end
end
in my js ajax is :
function myFunction(){
var arr = []
var len = $('li').length
for (let i=0 ; i< len; i++){
var attr = $('li')[i].childNodes['0'].data
arr.push(attr)
}
$.ajax({
method: 'GET',
url: '/phrase',
dataType: 'script',
data: {arr: arr}
}).done(function(data){
console.log(data);
})
}
в шаблоне:
<div class="form-group">
<%= button_tag 'GetPhrases', type: 'button', onclick:"myFunction()", class: 'btn btn-default' , id:"get" %>
</div>
мой результат
this pharase number 1
this pharase number 5
this pharase number 4
this pharase number 5
this pharase number 8
введите описание изображения здесь
Я хочу избежать дублирования Я хочу получить только 10 случайных строк без дублирования