Ответ 1
Вы можете использовать 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), пользователь или пользовательский sysadmin отключил его или возникла непредвиденная ошибка JS (т.е. Ошибка разработчика).