Переопределить представление HTML в Rails нарушить то же представление JS? - PullRequest
0 голосов
/ 16 ноября 2018

Я использую Redmine 3.3.3 и сделал для него плагин Gem.Недавно я обнаружил что-то вроде ошибки Rails (4.2), но, возможно, я не делаю правильных вещей ^^

В Redmine есть 2 формата, определенных для просмотра / проблем / редактирования:

  • REDMINE / app / view / Issues / edit.html.erb
  • REDMINE / app / view / Issues / edit.js.erb

Edit.js.erb используется для изменения некоторых полей в ajax, когда пользователь обновляет некоторые поля (например, поле statut)

В моем плагине Gem я переопределяю edit.html.erb:

  • MYGEM / app / view / Issues / edit.html.erb

С этим переопределением Rails "разбивает" edit.js.erb, преобразовав его в MYGEM ... edit.html.erbкогда запрашивается формат js.Я могу восстановить правильное поведение, создав edit.js.erb в MYGEM с тем же содержимым Redmine.

Действительно ли мне нужно переопределять форматы js для всех перезаписываемых файлов?

ВRails, такое поведение, по-видимому, в actionview-4.2.7.1:

  • : html - это запасной вариант по умолчанию для формата: js, поэтому, когда запрашивается: js, мы ищем [: js,: html] форматы (определенные в методе lookup_context.rb: format = ())
  • В path_set.rb find (* args) возвращает первый путь для find_all
  • In path_set.rb, _find_all возвращает первые шаблоны, возвращенные распознавателем

    => Мы не ищем по всем путям, первый отвечающий распознаватель «скрывает» остальные, на самом деле это не поиск «все»

  • В шаблоне / resolver.rb вызовите метод запроса extract_handler_and_format_and_variant

    В этом методе, если мы нашли файл с допустимым форматом, мы используем его.

    С существующим edit.html.erb мы используем его, потому что: формат html разрешен

    => Мы возвращаемся в _find_all и никогда не ищем в REDMINE представлениях

...