2012-08-22 37 views
30

href属性なしでlink_toヘルパーを使用してリンクを作成するにはどうすればよいですか?私はjavascriptアクション専用のリンクを作成したい、私はページや何かを再ロードしたくない。Rails:hrefなしでlink_toを使用して

urlパラメータを省略すると、リンクをクリックするとページがリロードされます。 URLの代わりにnilを提供しています。

javascript:void(0) 

これは、あなたはそれが何もしませんクリックすると、ページをリロードせず、トップへページの上に移動しないというリンクを持たせます。

+2

は、あなたが "#" へのURLを設定してみましたか? –

+0

"#"を実行すると、ページがリロードされます。私はJSとのリンクアクションを無効にすることができますが、 'link_to'を使ったさらに簡単な解決策があるはずです – bevanb

+2

どのようなHTMLが生成されていますか?一日の終わりに、あなたのJSは、デフォルトのリンクのクリック動作をとにかく防ぐ必要があります。これは問題ではないかもしれません。 –

答えて

27

私はこのアプローチを使用:no-op

+2

これは機能します。最終的にhrefなしで 'a'タグを作成することに終わりました。ブラウザは、左下に' javascript:; 'リンク先プレビューを表示しません。 – bevanb

+2

'javascript:void(0)'との違いは何ですか? – freemanoid

9

はへのhrefを設定します。

34

あなたはまた、あなたに与え

content_tag("a","link text") 

を使用することができます

= link_to('Click me', 'javascript:;', :id => :foo) 

その基本的Javascriptを

<a>link text</a> 

を参照してください:rails api

+1

しかし、賢明なことに、href属性を持たないリンクでは、カーソルがポインタに変わることはありません(テキストカーソルのままです)。 –

+1

"a"タグを使用できませんか?それはjavascriptに干渉しません.. – dax

+1

これは扱います(私はRails 4を使用しています) – Dudo

0

代替が

= link_to("My hyperlink", "#") 

ですこれは、あなたにクリックしたときに、nilを渡すようにページをリロードしないというリンクを提供します。同時に、マウスオーバー時にポインタをマウスに設定しますが、これはcontent_tagのアプローチでは得られません。レール5のための

+1

これはいくつかの場所で大丈夫ですが、それはあなたのページの上部に画面をバウンスします。 「javascript :;」を追加すると、ほとんどの場合、上に示唆したように、おそらくより良い方法です。 – jacklin

+1

興味深いことに、チップのおかげで。 –

0

例は次のようになります。

<%= content_tag("a", image_tag("/logo.png"), class: "navbar-brand") %>

これはとしてレンダリングされます:これはniels「答えに似て

<a class="navbar-brand"><img src="/logo.png" alt="Logo"></a>

が、ネストされたimage_tagとクラスで。

出典:Rails API

0

私は、そのような場合には、全くhref属性なしでプレーンなHTMLを使用して好む:

<a data-toggle="modal" data-target="#myModal">Open dialog</a> 

私見それはcontent_tag("a","link text")よりも読みやすいです。

  • href=#の欠点は、デフォルト
  • javascript:;によってクリックされたときにブラウザがトップ にスクロールすることで、私はあなたがそこの状況で、ボタンを使用して、より良いオフだと思う醜い
0

に見えますhrefはありません。

<button class='button'>Hello</button> 
0
<%= link_to '+ Add Make', 'javascript:void(0)', id: 'add-make', onclick: 'addMake()' %> 

、その後、あなたのjQuery:

function addMake() { 
    $.ajax({ 
    url: '/dealers', 
    type: 'GET', 
    dataType: 'script', 
    success: function (data) { 
     console.log('it was successful') 
     $('.add-make').hide(); 
    }, 
    error: function (data) { 
     console.log('it was error') 
    } 
    }); 
} 
関連する問題