2013-01-09 71 views
37

只是想知道是否有一种方法可以直接在rails link_to助手中使用turbolinks,一点点的谷歌搜索没有发现任何值得注意的事情,下面是我试过的东西的类型无济于事。在Rails中使用turbolinks link_to

<%= link_to 'Giraffe', giraffe_path(@giraffe), :data-no-turbolink => 'true' %> 
<%= link_to 'Giraffe', giraffe_path(@giraffe), :data { :no-turbolink => 'true'} %> 

我知道你可以做到这一点在常规链接类似这样的

<a data-no-turbolink='true' href="/giraffe-130">Giraffe</a> 

现在我只是包括周围的链接,如LIS或div的元素属性。

在此先感谢。

回答

86

最初我以为你需要使用哈希火箭语法的符号,但事实并非如此。您可以使用data:散列,并在该散列内使用下划线_的任何符号将被转换为破折号-

我想大多数Rails开发者希望看到以下(包括我自己,现在我知道更好):

<%= link_to('Giraffe', @giraffe, data: { no_turbolink: true }) %>

但以下也适用:

<%= link_to('Giraffe', @giraffe, 'data-no-turbolink' => true) %>

+0

得到它,谢谢! –

+0

我对42票的投票答案感到不满,即使我真的想。否则,谢谢我不知道这个下划线转换!那么这意味着在输出中不可能有实际的下划线? –

+0

如果你想在输出中使用下划线,你必须使用引号和散列火箭语法。 –

16

你可以毫无问题地使用符号来生成以下代码:

<a data-no-turbolink='true' href="/giraffe-130">Giraffe</a> 

只要执行以下操作:

<%= link_to 'Giraffe', giraffe_path(@giraffe), 
      :data => { :no_turbolink => true } %> 

注::no_turbolink将变得no-turbolink和值将被转换为JSON自动使用to_json,例如true"true"

+0

我认为这应该是正确的答案。它修复了原始问题中的拼写错误,而没有给他一种不同的方式。 –

4

或Ruby 1.9+语法:

<%= link_to 'Foo', foo_path(@foo), data: { no_turbolink: true } %> 

但最后我赞成Wiselinks下降turbolinks这使得行为明确上的所有链接,加上Wiselinks还支持部分更新(例如,寻呼),代替状态(没有按不污染浏览器历史,非常适合列排序),表单提交(适用于搜索表单),重定向,支持没有历史API的浏览器以及更智能的资产更改处理。

59

Turbolinks 5采用了稍微不同的语法

<%= link_to "Foo", new_foo_path(@foo), data: { turbolinks: false } %> 

来源:Turbolinks Github Page

+1

升级到Rails 5之后,这绝对是要注意的事情。花了我一段时间才意识到属性命名已经改变。 – bovender

6

@Joseph你是对的,但只有小的变化:

<%= link_to "Foo", new_foo_path(@foo), data: { turbolinks: 'false' } %> 

当我打字turbolinks: false没有按没有与布尔工作,只有当我使用字符串的价值turbolinks: 'false'。所以也许有人帮助这些信息;)。

+0

哇。很好,赶上那里。超级有用。你救了我很多麻烦。 –

+1

这对我有用!谢谢! – Schylar

0

,当你想使用地区语言的变化,你有不喜欢这里:

<%= link_to content_tag(:span, "Українською"), {locale: :uk}, 
data:{ turbolinks: "false" }%>