我尝试使用rails / turbolinks 3,并希望进行部分替换工作,但没有运气。这是代码:
的Gemfile
gem 'turbolinks', github: 'rails/turbolinks'
(显示使用3.0.0所以问题不在于,app..n.js中包含turbolink)。
路由器:
root 'home#index'
get '/partial1' => 'home#partial1', as: 'partial1'
get '/partial2' => 'home#partial2', as: 'partial2'
控制器
class HomeController < ApplicationController
def index
end
def partial1
render change: 'partial1'
end
def partial2
render change: 'partial2'
end
end
布局/ application.html.erb
<!DOCTYPE html>
<html>
<head>
<title>Turbo</title>
<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true %>
<%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>
<%= csrf_meta_tags %>
</head>
<body>
<div>
this is home
<%= link_to("partial asd1", partial1_path) %>
<%= link_to "partial 2", partial2_path%>
</div>
<div id="partial1" data-turbolinks-temporary>
<p>her</p>
</div>
<div id="partial2">
<p>here is partial</p>
</div>
<%= yield %>
</body>
</html>
但它并没有取代那些部分,它的作用与常规一样。我也尝试放turbolinks: true
并渲染Turbolinks.replace('some html', {change: ['partial1']})
,但也没有任何反应。我也尝试过e.preventDefault和Turbolinks.visit('/partial1', {change: 'partial1'})
,它也不能像调用Turbolinks.replace('some html', {change: 'partial1'})
那样工作。 Turbolinks js可以在浏览器中加载。在开发中它显示调用Turbolinks.visit
。试过不同的机器。
如果有人让它发挥作用,请告诉我你是如何做到的。