Rails рендерит файл в формате HTML вместо JS. Использование Ransack Gem - PullRequest
0 голосов
/ 22 марта 2019

Имею кошмар с этим и думаю, что я сойду с ума.Это должно быть что-то простое.Я работаю над списком объявлений # index.Он отображает результаты в JS-части без проблем, используя remote: true в форме поиска.Все хорошо.однако ....

Я хочу, чтобы эта же функция работала на корневой странице приложения.Таким образом, по существу, панель поиска, которая будет отображать результаты поиска в частичном сразу под панелью, когда пользователь выполняет поиск.Я могу заставить это работать нормально с Ransack, в результате чего страница обновляется и результаты показывают из частичного.На мой взгляд, он не отдает частичную, как JS, так же, как это делает контроллер листинга.

Биты кода очень похожи.Я добавлю их оба ниже.Ransack работает, просто не распознает пульт: правда.Я посмотрел в Chrome и на самом деле вижу, что по какой-то причине класс формы не регистрируется правильно.Я сделаю снимок экрана с рабочими и нерабочими битами.

Так что это просто вопрос поискового запроса Ransack, который не распознает удаленное устройство: истинно, судя по всему.Есть догадки?Требует ли Ransack добавить в форму что-то особенное, чтобы она работала со страницы с именем home.html.erb?вместо index.html.erb?Хотелось бы, чтобы несколько глаз буквально сказали мне, что я делаю что-то глупое здесь.Спасибо.

Фрагменты рабочего кода для поиска в листинге_контроллере

в листинге # index

def index
  @search = Listing.ransack(params[:q])
  @data = @search.result(:distinct => true)
  @listings = @data.to_a
end

в листинге index.html.erb

<%= search_form_for @search, remote: true do |f| %>
  <%= f.search_field :title_or_content_or_aircraft_highlights_or_airframe_engine_apu_weight_or_avionics_connectivity_or_interior_or_exterior_or_additional_info_cont, placeholder: "Search by keyword..", class: "form-control" %>
  <%= f.submit "Show results", class: "btn btn-secondary btn-lg  btn-block"  %>
<% end %>

<div class="col-md-9" id="aircraft_listing">
  <%= render partial: "shared/aircrafts-list" %>
</div>

листингеindex.js.erb

$("#aircraft_listing").html("<%= j render partial: 'shared/aircrafts-list' %>");

Работает как сон.

Контроллер страниц, который не будет играть в мяч.Поиск работает, но не ajax call

pages # home

def home
  @search = Listing.ransack(params[:q])
  if params[:search].present?
    @data = @search.result(:distinct => true)
    @listings = @data.to_a
  end
end 

pages home.html.erb

<%= search_form_for @search, remote: true do |f| %>
  <%= f.search_field: title_or_content_or_aircraft_highlights_or_airframe_engine_apu_weight_or_avionics_connectivity_or_interior_or_exterior_or_additional_info_cont, placeholder: "Search by keyword..", class: "form-control-lg form-control-borderless" %>
  <%= f.submit "Search", class: "btn btn-secondary btn-lg" %>
<% end %>

<div id="home_search_list">
  <%= render partial: "shared/home-search-list" %>
</div>

pages home.js.erb

$("#home_search_list").html("<%= j render partial: 'shared/home-search-list' %>");
alert('Hello Rails');

очевидно, что предупреждение не появляется при запуске поиска.

Названы частичные имена (только что проверили их снова, чтобы убедиться, что я не схожу с ума)

_aircrafts-list.html.erb
_home-search-list.html.erb

enter image description here

enter image description here

И, наконец, последний бит, где я вижу пульт, явно не происходит в версии домашней страницы.

enter image description here

enter image description here

По какой-то причине тег формы не появляется в примере домашней страницы,Я только что заметил эту часть сейчас, после того как утром выдернул то, что осталось от моих волос.Свежие глаза были бы великолепны.Теперь еще одна вещь, касающаяся Ransack: тот факт, что у моих маршрутов есть ресурсы для перечисления, но у меня буквально есть только root_path, связанный с домашним действием моего контроллера страниц, имеет ли это значение с Ransack?

Спасибо всем.

1 Ответ

0 голосов
/ 22 марта 2019

Так что извиняюсь всем.Я на самом деле понял это.Смотрите комментарии.Был уже ссылкой на тег формы, поэтому он сделал вызов формы Ransack излишним (это было сделано с другим разработчиком, поэтому я не заметил вышеупомянутый тег формы в коде страниц. Глупый материал для меня).Когда я удалил этот стиль, я увидел, что удаленный вызов работает.Однако он все еще вызывал данные из контроллера списков.Мне просто нужно было изменить переменную на что-то еще @q, а затем также добавить опцию URL-пути в форму, как показано ниже.Спасибо всем за чтение.Извиняюсь за трату времени.Иногда нужно просто записать все это, чтобы понять, насколько ты глуп.Предположим, можно использовать в качестве справки для других людей, идущих вперед.

<%= search_form_for @q, url: root_path, remote: true do |f| %>

Позволил мне сослаться на путь root_path с помощью функции Ransack.

...