如何在除了使用body标签之外的特定页面禁用Turbolinks?

4
%div.col-md-2
  Last updated (h:m):
  %div
    %body{"data-turbolinks" => "false"}
      %strong= current_user.last_active_at ? local_time(current_user.last_active_at, '%d/%m/%Y %H:%M') : 'N/A'

如果在body标签中使用"data-turbolinks" => "false",Turbolinks会被禁用,并且正常工作,但是我们不能在代码的中间某个位置使用body标签。因此,在任何其他标记中尝试禁用turbolinks(如div)无法生效,那么有没有不使用body标签来实现它的方法呢?

1个回答

2
你可以这样做:
app/helpers/application_helper.rb文件中,创建一个黑名单turbolinks数组,其中将以controller/action格式列出所有需要禁用turbolinks的页面。比如你不想在welcome控制器的index操作,articles控制器的show操作使用turbolinks:
# app/helpers/application_helper.rb

module ApplicationHelper

  def turbolinks_blacklist_array
    ["welcome/index", "articles/show"]
  end
end

然后在你的app/views/layouts/application.html.erb文件中:
  <body
    <% if turbolinks_blacklist_array.include?("#{params[:controller]}/#{params[:action]}") %>
      <%= 'data-turbolinks="false"'.html_safe %>
    <% end %>
  >
    <%= yield %>
  </body>

编辑:或使用一行代码:

<body <%= turbolinks_blacklist_array.include?("#{params[:controller]}/#{params[:action]}") ? 'data-turbolinks="false"'.html_safe : '' %>>


</body>

我使用了 erb 格式,但我认为同样可以转换为 haml。我从未使用过 haml。 - cdadityang
除了使用 body 标签,我们还有其他实现的方法吗? - user11350468
如果您想在整个页面上禁用Turbolinks,那么我认为这是最好的方法。但我认为您也可以在链接上禁用它们。例如:<%= link_to 'Show', article, data: { turbolinks: false } %> - cdadityang

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接