Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Ruby: Общие вопросы > При очистке в поисkе пустая страница


Автор: Karta 27.4.2020, 13:13
Добрый день.
Написала простой поиск в Ruby. В целом он рабочий, НО когда я в поиске удаляю текст, у меня отображается пустая страница. А должны отображать все пользователи. Ошибок никаких не выдает. Не могупонять, что я не правильно сделала... Может, кто-то, что-то подскажет?
Прилагаю код.
Код

persons_controller.rb

class PersonsController < ApplicationController
 def index
    @persons = User.all
  end

  def load
    @persons = User.paginate(page: params[:page], per_page: 30)
    respond_to do |format|
      format.html
      format.js
    end  
    render layout: false
  end

  def search
    @params = params[:search].split("=").last
    @persons = User.search(@params).paginate(page: params[:page], per_page: 30)
    respond_to :js
  end
end

Код

models/user.rb

class User < ApplicationRecord
  validates :full_name, presence: true
  def self.search(params)
    if params || params != ""
      User.all.where("LOWER(full_name) LIKE :search OR LOWER(title) LIKE :search", search: "%#{params}%")
    else
      User.all
    end
  end
end

Код

views/persons/load.html.erb

 <form class="input-field col s8" action="/persons" >
        <i class="material-icons prefix" aria-hidden="true">search</i>
        <%= form_tag "", url: persons_load_path, role: "search", remove:true, method: :get do %>
          <%= text_field_tag :search, nil, class: "search_persons"%>
        <% end %>
       </form>
<div id='persons' class="person_tbody_content">
    <%= render partial: "persons/person"%>
  </div>
  <%= will_paginate @persons %> 
<script type="text/javascript">
  $(".search_persons").keyup(function() {
    $.ajax({
      url: '/persons/search',
      data: {search: $(this).serialize()}
    });
  });
</script>

Код

views/persons/search.jsl.erb

$(".person_tbody_content").html("<%= j render(:partial => '/persons/person')%>");
$('.pagination').replaceWith('<%= j will_paginate (@persons) %>');

Спасибо!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)