2012-08-22 33 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') 
    } 
    }); 
} 
相关问题