Добрый день. Написала простой поиск в Ruby. В целом он рабочий, НО когда я в поиске удаляю текст, у меня отображается пустая страница. А должны отображать все пользователи. Ошибок никаких не выдает. Не могупонять, что я не правильно сделала... Может, кто-то, что-то подскажет? Прилагаю код. Без подсветки | | 1: | | 2: | | 3: | | 4: | | 5: | | 6: | | 7: | | 8: | | 9: | | 10: | | 11: | | 12: | | 13: | | 14: | | 15: | | 16: | | 17: | | 18: | | 19: | | 20: | | 21: | | 22: |
| | 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 |
|
|
Без подсветки | | 1: | | 2: | | 3: | | 4: | | 5: | | 6: | | 7: | | 8: | | 9: | | 10: | | 11: | | 12: |
| | 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 |
|
|
Без подсветки | | 1: | | 2: | | 3: | | 4: | | 5: | | 6: | | 7: | | 8: | | 9: | | 10: | | 11: | | 12: | | 13: | | 14: | | 15: | | 16: | | 17: | | 18: | | 19: | | 20: |
| | 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) %>'); |
|
|
Спасибо!
|