Вы, похоже, совершенно не поняли, как работают JS .erb шаблоны.
Вы не ссылаетесь на .js.erb
шаблоны с javascript_pack_tag
. То для ссылки на активы в конвейере активов. И вы не можете отобразить партиалы в конвейере ресурсов, так как они компилируются во время развертывания.
Причина, по которой вы просто получаете буквальную строку "<%= j render(partial: 'teacher_form') %>"
, заключается в том, что ресурсы не отправляются через ERB в веб-пакете. Звездочки сделали бы это и вызвали ошибку.
Вместо этого вы должны написать свой шаблон js.erb
, чтобы он изменил страницу:
def show
@teachers = @year.teachers
respond_to do |format|
format.html
format.js # renders show.js.erb
end
end
// You can't use imports since this is not run in the assets pipeline
// you have to make jQuery a global
$("#teacher-form").html("<%= j render(partial: 'teacher_form' %>");
Когда вы нажимаете ссылка драйвер Rails u js на самом деле просто загружает этот скрипт и оценивает его на странице. Предполагается, что это позволяет вам делать ajax запросы и SPA-подобные вещи без инфраструктуры SPA или фактически писать обработчики запросов. Если его хорошая идея или нет, является спорной.
1017 * То, что я не понимаю, почему вы не просто поставить форму в представлении, в первую очередь, и только переключить его видимость, а не делаете соучастник сервера это то, что просто трансформация на стороне клиента.