Bạn có thể sử dụng link_to_function
(loại bỏ trong Rails 4.1):
link_to_function 'My link with obtrusive JavaScript', 'alert("Oh no!")'
Hoặc, nếu bạn hoàn toàn cần phải sử dụng link_to
:
link_to 'Another link with obtrusive JavaScript', '#',
:onclick => 'alert("Please no!")'
Tuy nhiên, việc đưa JavaScript ngay vào HTML được tạo của bạn là gây khó chịu và là thực hành không tốt.
Thay vào đó, mã Rails của bạn chỉ đơn giản nên có một cái gì đó như thế này:
link_to 'Link with unobtrusive JavaScript',
'/actual/url/in/case/javascript/is/broken',
:id => 'my-link'
Và giả sử bạn đang sử dụng Prototype JS framework, JS như thế này trong bạn application.js
:
$('my-link').observe('click', function (event) {
alert('Hooray!');
event.stop(); // Prevent link from following through to its given href
});
Hoặc nếu bạn' đang sử dụng jQuery:
$('#my-link').click(function (event) {
alert('Hooray!');
event.preventDefault(); // Prevent link from following its href
});
bởi usi Theo kỹ thuật thứ ba này, bạn đảm bảo rằng liên kết sẽ đi qua một số trang khác — không chỉ thất bại một cách im lặng — nếu JavaScript không khả dụng cho người dùng. Hãy nhớ rằng, JS có thể không khả dụng vì người dùng có kết nối internet kém (ví dụ: thiết bị di động, wifi công cộng), người dùng hoặc sysadmin của người dùng đã vô hiệu hóa hoặc xảy ra lỗi JS bất ngờ (tức là lỗi nhà phát triển).
Trừ khi bạn vừa rời khỏi '#' cho ngắn gọn, dường như không có nhiều điểm trong việc sử dụng link_to. Tại sao không chỉ sử dụng một thẻ với tập hợp onclick như bạn đã làm ở trên. – Brian