Вы можете использовать link_to_function
(удалено в Rails 4.1):
link_to_function 'My link with obtrusive JavaScript', 'alert("Oh no!")'
Или, если вам абсолютно необходимо использовать link_to
:
link_to 'Another link with obtrusive JavaScript', '#',
:onclick => 'alert("Please no!")'
Однако вставка JavaScript прямо в сгенерированный HTML-код навязчива и плохая практика .
Вместо этого ваш код Rails должен просто выглядеть примерно так:
link_to 'Link with unobtrusive JavaScript',
'/actual/url/in/case/javascript/is/broken',
:id => 'my-link'
И при условии, что вы используете Prototype JS framework , JS, как это в вашем application.js
:
$('my-link').observe('click', function (event) {
alert('Hooray!');
event.stop(); // Prevent link from following through to its given href
});
Или, если вы используете jQuery :
$('#my-link').click(function (event) {
alert('Hooray!');
event.preventDefault(); // Prevent link from following its href
});
Используя этот третий метод, вы гарантируете, что ссылка перейдет на какую-то другую страницу - не просто молча завершится неудачей - если JavaScript недоступен для пользователя. Помните, что JS может быть недоступен, потому что у пользователя плохое интернет-соединение (например, мобильное устройство, общедоступный Wi-Fi), пользователь или системный администратор пользователя отключил его или произошла непредвиденная ошибка JS (то есть ошибка разработчика).