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()"