Rails AJAX ошибка рендеринга ActionView :: Template :: Error (неопределенная локальная переменная или метод 'object') - PullRequest
0 голосов
/ 10 апреля 2020

Я создаю панель поиска для некоторых объектов, которые называются notification groups с использованием ajax. Когда я пытаюсь найти объекты с помощью ajax, я получаю следующую ошибку в моей консоли:

ActionView::Template::Error (undefined local variable or method `notification_group' for #<#<Class:0x00007f6e94496f38>:0x00007f6e8c415508>):

Моя форма поиска выглядит следующим образом:

 - if @notification_groups.present?
  #search_bar
    = form_tag :search_notification_groups, id: 'search_form', method: :get, remote: true do
      = text_field_tag :search, nil, placeholder: 'Search by friendly name'
      = hidden_field_tag :per_page, @per_page
      = submit_tag 'Search', id: 'btn_note_group_search'

После моего код представления, у меня есть этот фрагмент кода представления, который визуализирует объекты для страницы индекса:

  -if @notification_groups.size > 0
    = render partial: 'notification_group', collection: @notification_groups

И частичный код следующий. В основном это таблица с <tr> строками:

%tr.ng_list
%td
    = check_box_tag "ids[]", notification_group.id, false, class: 'check_box', id: notification_group.id, 'data-group-name' => notification_group.friendly_name
  %td
    = link_to notification_group.friendly_name, notification_group_path(@ssl_slug, notification_group.id)
  %td
    = link_to notification_group.scan_logs.count, notification_group_scan_logs_path(@ssl_slug, notification_group.id)
  %td
    = notification_group.disable ? "Disabled" : "Enabled"

Мой код отлично работает с HTML, однако, когда я пытаюсь реализовать свой поиск с помощью Ajax, появляется ошибка, что нет переменной notification_group, которая является локальной переменной.

Вот мой код контроллера:

  def search
    @notification_groups = NotificationGroup.friendly_name(params[:search]).paginate(@p)

    respond_to do |format|
      format.html { render :index }
      format.js
    end
  end

Прилагаемый код search.js.erb представляет собой простую строку, которая должна отображать частичное:

$(document).ready(function() {
  $(".ng_list").html("<%= escape_javascript(render 'notification_group', collection: @notification_groups) %>")
})

Я проверил документацию по rails, и вот как должен работать файл search.js.erb. Однако он выдает ошибку 500 и не вносит изменения в файл html. Я что-то здесь упускаю?

1 Ответ

0 голосов
/ 10 апреля 2020

Попробуйте заменить search.js.erb следующим

$(".ng_list").html("<%= escape_javascript(render @notification_groups) %>")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...