Я пытаюсь получить случайную единственную базу данных с рельсов с помощью ajax? - PullRequest
0 голосов
/ 29 апреля 2018

Я использую 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 случайных строк без дублирования

1 Ответ

0 голосов
/ 29 апреля 2018

Будьте осторожны с выборкой в ​​отношении активной записи, вместо этого выполните:

Model.where(id: Model.all.pluck(:id).sample(10))

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...