link_to方法,并在Rails中单击事件
我如何创build这种types的链接:
<a href="#" onclick="document.getElementById('search').value=this.value">
在Rails中使用link_to
方法?
我无法从Rails文档中弄清楚。
你可以使用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框架 ,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不可用于用户。 请记住,由于用户的互联网连接较差(例如移动设备,公共WiFi),用户或用户的系统pipe理员将其禁用,或发生意外的JS错误(即开发人员错误),JS可能不可用。
如果使用JQuery并将其放在application.js或head部分中,则需要将其包装在ready()部分中,以便跟进Ron的回答。
$(document).ready(function() { $('#my-link').click(function(event){ alert('Hooray!'); event.preventDefault(); // Prevent link from following its href }); });
只是使用
=link_to "link", "javascript:function()"