ActiveAdmin ломает Rails JQuery UJS.Ненавязчивый JavaScript ajax: success и ajax: error не запускаются и не вызываются - PullRequest
0 голосов
/ 08 июня 2018

У меня есть следующие

=form_for @issue, remote: true, html: {class: 'form-inline'} do |f|
  ...

И

<form class="form-inline" id="new_issue" action="/issues" accept-charset="UTF-8" data-remote="true" method="post">

И

$(document).on 'turbolinks:load', ->
  $("#new_issue").on("ajax:success", (e, data, status, xhr) ->
    console.log 'data='+data
    console.log 'status='+status
    console.log 'xhr='+xhr
    $("#new_issue_success").append(xhr.responseText).show()
    $("#new_issue_error").hide()
  ).on("ajax:error", (e, xhr, status, error) ->
    console.log 'error='+error
    console.log 'status='+status
    console.log 'xhr='+xhr
    $("#new_issue_error").append("ERROR: #{error}").show()
    $("#new_issue_success").hide()
  ).on('ajax:complete', ->
    console.log 'complete'
  )

И

  def create
    issue = Issue.new issue_params
    issue.validate_user_entry
    if issue.errors.empty? && issue.save # can't use #valid? because that clears errors and runs only standard Rails validations!
      render json: issue, status: :created
    else
      render json: issue.errors.full_messages, status: :unprocessable_entity
    end

Я получаю это вмоя консоль браузера

POST http://localhost:3000/issues 422 (Unprocessable Entity)
XHR failed loading: POST "http://localhost:3000/issues".

И это в моей консоли сервера Rails

Started POST "/issues" for 127.0.0.1 at 2018-06-07 22:29:34 -0400
Processing by IssuesController#create as JS
  Parameters: {"utf8"=>"√", "issue"=>{"first_name"=>"", "last_name"=>"", "city"=>"", "issue"=>""}, "commit"=>"Submit"}
Completed 422 Unprocessable Entity in 1ms (Views: 0.2ms | ActiveRecord: 0.0ms)

Так почему бы не вызвать обратный вызов Ajax и распечатать результаты на консоли?Успешно или неудачно, я ожидал, что он покажет результаты.

Это взято прямо из руководства: http://guides.rubyonrails.org/v5.0/working_with_javascript_in_rails.html#form-for

Я также пытался

$(document).on("ajax:success", (e, data, status, xhr) ->
  ...
).on "ajax:error", (e, xhr, status, error) ->
  ...

Я подтвердилсобытие прослушивает элемент в браузере

enter image description here

У меня есть что-то почти такое же в другом проекте Rails, который работает.Я опустился до Rails 5.0.6, как и другой проект, но это не помогло.

Rails 5.0.7, JQuery 3.3.1


Я обнаружил, что это вызваноActiveAdmin.Я ввел ошибку для этого .Когда я переименовываю active_admin.js.coffee в active_admin.js.coffee.xxx, тогда это работает, но, конечно, тогда ломается ActiveAdmin.Я пытался добавить //= stub active_admin к application.js, но по какой-то причине jquery_ujs не загружался.Я просмотрел источник страницы, и /assets/jquery_ujs.self-784... больше не появлялся, несмотря на то, что //= require jquery_ujs находился в application.js.

. Как можно использовать ActiveAdmin и UJS?Мне не нужны UJS на /admin страницах.

1 Ответ

0 голосов
/ 08 июня 2018

Я исправил это, переместив active_admin.js.coffee в vendor\assets\javascripts\active_admin.js.coffee.Теперь /admin работает, а удаленная форма на / работает.Совершенно не очевидно.Хотелось бы, чтобы они поместили это в документы, или, что еще лучше, просто не мешали стандартным Rails.

...