ссылка на метод и нажмите событие в Rails
Как создать ссылку такого вида:
<a href="#" onclick="document.getElementById('search').value=this.value">
методом link_to
в Rails?
Я не мог понять от Rails docs.
3 ответа:
можно использовать
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'
и предполагая, что вы используете прототип JS рамки, 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 произошла ошибка (т. е. ошибка разработчиков).
чтобы следить за ответом Рона при использовании JQuery и вводе его в приложение.js или головной раздел вам нужно обернуть его в готовый () раздел...
$(document).ready(function() { $('#my-link').click(function(event){ alert('Hooray!'); event.preventDefault(); // Prevent link from following its href }); });