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