1. ホーム
  2. ruby-on-rails

Railsのlink_toメソッドとclickイベント

2023-09-13 13:56:56

質問

このタイプのリンクを作成するにはどうしたらよいでしょうか。

<a href="#" onclick="document.getElementById('search').value=this.value">

メソッドを使って link_to をRailsで使うか?

からは解りませんでした。 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!")'

しかし、生成されたHTMLにそのままJavaScriptを入れるのは 邪魔になる であり、また バッドプラクティス .

代わりに、あなたの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
});

この3つ目のテクニックを使うことで、ユーザーがJavaScriptを利用できない場合、リンクは黙って失敗するのではなく、他のページに移動することが保証されます。ユーザーがインターネット接続に問題がある (例: モバイル デバイス、公衆無線 LAN)、ユーザーまたはユーザーのシステム管理者が無効にした、予期しない JS エラー (例: 開発者のエラー) などが原因で JS が使用できない可能性があることを覚えておいてください。