2012-08-22 62 views
30

如何使用link_to幫助程序創建不帶href屬性的鏈接?我想爲JavaScript動作專門製作一個鏈接,我不希望它重新加載頁面或任何東西。Rails:使用link_to創建不帶href的鏈接

當我省略url參數時,單擊鏈接重新加載頁面。同上提供nil來代替網址。

+2

你試過設置URL以 「#」? –

+0

做「#」使它重新加載頁面。我知道我可以用JS重寫鏈接動作,但是似乎應該有一個更簡單的解決方案,用'link_to' – bevanb

+2

它爲你生成的HTML是什麼?在一天結束時,你的JS應該防止默認的鏈接點擊行爲。這可能不是問題。 –

回答

27

我用這個辦法:

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

它基本上一個Javascript no-op

+2

這起作用。最後只需製作一個沒有href的''''標籤,這樣瀏覽器就不會在左下角顯示'javascript:;'鏈接目標預覽。 – bevanb

+2

'javascript:void(0)'有什麼區別? – freemanoid

9

將HREF到:

javascript:void(0) 

這會讓你有一個鏈接,點擊它什麼也不做,不重新加載頁面,而不會移動頁面到頂部。

34

你也可以使用一個

content_tag("a","link text") 

,讓你

<a>link text</a> 

查看:rails api

+1

但是,巧妙的是,沒有href屬性的鏈接不會導致光標變爲指針(它保持爲文本光標)。 –

+1

你不能使用「a」標籤嗎?它不會干擾JavaScript .. – dax

+1

這工作的一種享受(我正在使用Rails 4) – Dudo

0

另一種方法是

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

這會給你一個鏈接,點擊後,沒有重新加載頁面像傳遞零。同時,它會將鼠標設置爲鼠標懸停的指針,這將不會通過content_tag方法獲得。

+1

這在某些地方是可以的,但它會將屏幕彈回到頁面的頂部。添加'javascript :;'如上所述,可能是大多數情況下更好的方法。 – jacklin

+1

有趣,謝謝你的提示。 –

0

對導軌5的一個例子是:

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

這將作爲渲染:

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

這類似於niels「的答案,但具有嵌套image_tag和一類。

來源:Rails API

0

我更喜歡使用普通的HTML而不href屬性在所有在這種情況下:

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

IMHO它比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') 
    } 
    }); 
} 
相關問題