Rails Ajax: поиск все еще обновляет страницу после нажатия - PullRequest
4 голосов
/ 14 января 2020

Я работаю над приложением поиска, используя jquery UI Rils Gem.

Вот мои настройки.

HTML:

 <%= form_tag(contacts_path, class: "form-inline", role: "search", method: :get, remote: true) do %>
           <%= text_field_tag :term, params[:term], class: "form-control search-input", id: "term", placeholder: "Search..", autocomplete: "off" %>
           <%= hidden_field_tag :category_id, params[:category_id] %>
           <button class="btn btn-primary btn-lg main-btn search-btn" type="submit">Search</button>
      <% end %>

Обратите внимание, что я помещаю remote:true в форму. А затем на контроллере моих контактов:

 def autocomplete
    if params[:category_id] && !params[:category_id].empty? 
      category_find = Category.find(params[:category_id])
      @contacts = category_find.contacts.search(params[:term]).order(created_at: :desc).page params[:page]
      render json: @contacts.map { |contact| { id: contact.id, value: contact.name }}
    else 
      @contacts = Contact.search(params[:term]).order(created_at: :desc).page params[:page]
      render json: @contacts.map { |contact| { id: contact.id, value: contact.name }}
    end
  end

Затем на моих маршрутах:

scope '/dashboard' do
    resources :contacts do
      collection do
        get 'autocomplete'
      end
    end
  end 

Я добавил индекс. js .erb файл для повторной визуализации моего списка контактов с помощью моего драгоценного камня пагинации kaminari:

$('#contacts').html('<%= j(render @contact) %>');
$('#paginator').html('<%= j(paginate(@contacts, remote: true)) %>');

Здесь я ожидаю, что, поскольку я помещаю remote:true в строку поиска, я ожидаю, что когда я нажму на элемент автозаполнения, он не будет обновляться sh страница, но сейчас она все еще обновляет страницу:

enter image description here

Есть идеи, почему это так?

1 Ответ

1 голос
/ 15 января 2020

Ваш render метод обновит sh вашу страницу

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