render :js
отправит данные с типом MIME text/javascript
Браузеры увидят это и попытаются загрузить или отобразить их (мой браузер, Chromium, отображает файлы .js в виде открытого текста.)
render :js
на самом деле предназначен для возврата некоторого JavaScript, который будет обработан кодом уже на этой странице.
По сути, вы можете получить вызов AJAX из jQuery:
$.ajax({
type: "POST",
url: "tokens/1/destroy.js",
data: { _method: 'DELETE', cell: dsrc.id }
});
Это некоторый код, взятый из моего проекта.Здесь dataType не определен, поэтому jQuery разумно «угадывает», какой тип данных возвращается.Он видит, что это MIME-тип: text/javascript
, и выполняет его.Что, если бы мы использовали ваш код, привело бы к появлению диалогового окна с предупреждением.
По сути, вам необходимо загрузить уже загруженную страницу, и страница должна ждать, пока "vanilla JavaScript"будет возвращено.
Если вы просто хотите выполнить какой-то код для этого конкретного действия, вам просто нужно обернуть его, используя javascript_tag
в вашем шаблоне / представлении, или включить внешний файл .js.