【问题标题】:Using turbolinks in a Rails link_to在 Rails 中使用 turbolinks link_to
【发布时间】:2012-12-23 00:52:39
【问题描述】:

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

<%= 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 或 divs。

提前致谢。

【问题讨论】:

    标签: ruby-on-rails-3.2 turbolinks ruby-on-rails-4


    【解决方案1】:

    为 Rails 5+ 编辑: @ManishShrivastava 正确指出了 Rails 5 所需的不同语法,如 Joseph's answer 所示。

    &lt;%= link_to('Giraffe', @giraffe, data: { turbolinks: false }) %&gt;

    适用于 Rails 4 及以下版本

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

    我认为大多数 Rails 开发人员更愿意看到以下内容(包括我自己,现在我知道得更清楚了):

    &lt;%= link_to('Giraffe', @giraffe, data: { no_turbolink: true }) %&gt;

    但以下也有效:

    &lt;%= link_to('Giraffe', @giraffe, 'data-no-turbolink' =&gt; true) %&gt;

    【讨论】:

    • 即使我真的很想用 42 票来投票,我也很难过。否则,谢谢我不知道这个下划线破折号转换!那么这意味着在输出中不可能有实际的下划线?
    • 如果你想在输出中使用下划线,你必须使用引号和哈希火箭语法。
    • @ManishShrivastava 感谢您指出 Rails 5 所需的编辑。
    【解决方案2】:

    Turbolinks 5 使用稍微不同的语法

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

    来源:Turbolinks Github Page

    【讨论】:

    【解决方案3】:

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

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

    只需执行以下操作:

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

    注意::no_turbolink 将变为 no-turbolink 并且该值将使用 to_json 自动转换为 JSON,例如true"true"

    【讨论】:

    • 我认为这应该是正确的答案。它修正了原始问题中的错别字,而没有给他一个不同的方式。
    【解决方案4】:

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

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

    当我输入 turbolinks: false 时,bool 不起作用,仅当我使用字符串作为值 turbolinks: 'false' 时才起作用。所以也许有人帮助这个信息;)。

    【讨论】:

    • 哇。那里不错。超级有帮助。你为我省去了很多麻烦。
    【解决方案5】:

    或 Ruby 1.9+ 语法:

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

    但我最终放弃了 turbolinks 以支持 Wiselinks ,这使得所有链接的行为都明确,此外 Wiselinks 还支持部分更新(例如分页),替换状态(不会污染浏览器历史记录,非常适合列排序),表单提交(非常适合搜索表单)、重定向、支持没有历史 API 的浏览器以及更智能的资产更改处理。

    【讨论】:

      【解决方案6】:

      当您想使用区域设置更改语言时,您可以这样做:

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

      【讨论】:

        猜你喜欢
        • 2015-06-25
        • 2017-12-14
        • 1970-01-01
        • 2016-12-03
        • 2016-05-02
        • 2013-05-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多