Базовые ошибки Rails Active Admin - добавьте прямую привязку к полю с ошибкой - PullRequest
0 голосов
/ 23 июня 2018

У меня очень длинная форма внутри Rails Active Admin.

Я бы хотел настроить базовые сообщения об ошибках, то есть ошибки, отображаемые в верхней части страницы (а не в каждом поле), чтобы вместо того, чтобы быть просто сообщением по умолчанию (см. Пример ниже), Пользователь может иметь внутри этого текста «короткую ссылку», то есть ссылку на поле с ошибкой, чтобы он мог просто щелкнуть и перенести на страницу в поле с ошибкой.

Текущее сообщение об ошибке:

enter image description here

Сообщение об ошибке, которое я хотел бы получить

Например, текст на изображении выше может выглядеть так:

 Images at least one image is required. <a href="#link_to_anchor_of_field_with_error">Please check it</a>.

Обратите внимание, что на моей странице формы кемпинга я могу редактировать атрибуты кемпинга, но также комнаты (они имеют отношение / has_many к модели кемпинга => в одном кемпинге много комнат) Так что это должно быть применимо как к атрибутам Camping, так и к атрибутам связанных комнат, если они обнаружат ошибки при отправке формы

ActiveAdmin.register Camping do

  form do |f|
    f.semantic_errors *f.object.errors.keys

    f.inputs "Information for the Camping" do
      f.input :name,        
      f.input :city        
    end

    f.inputs "Rooms" do
      f.has_many :rooms,
                   allow_destroy: true,
                   heading:       false, 
                   new_record:    true,                   
                   sortable_start: 0 do |room|
        room.input :name,          
        room.input :room_nb,         
        room.input :facilities
      end
    end 
  end

Я даже не уверен, должно ли это быть сделано в конфигурации Active Admin или более внутри конфигурации Formtastic, то есть той формы, которую использует DSL Active Admin. Возможно, настройки, найденные в этом посте ( Заставьте semantic_errors отображать точное сообщение об ошибке ), могут быть использованы, но это далеко за мой уровень:)

...