Rub*_*nez 44 javascript ruby ruby-on-rails turbolinks
我正在尝试使用Rails 4和Turbolinks在具体页面中创建JS代码段.我尝试过标准解决方案:
<script type="text/javascript">
var ready = function() {
// Bla bla
};
$(document).ready(ready);
$(document).on('page:load', ready);
</script>
Run Code Online (Sandbox Code Playgroud)
但它似乎没有用.我的代码片段是这样的:
<script type="text/javascript">
function ismready()
{
var API_KEY = "api key";
var roomId = "room id";
var ism = new Ismuser(API_KEY, roomId);
ism.init({
board: {
layer: "board"
},
video: {
camsContainer: "guest"
},
chat: {
layer: "chat"
},
moderator: true,
});
}
</script>
<script src="http://assets.ismuser.com/v0.4/js/ismuser.js" type="text/javascript"></script>
Run Code Online (Sandbox Code Playgroud)
该片段无法按预期工作(即使使用标准解决方案),最后我只想在此页面中禁用Turbolinks.
我该怎么做?
- 解决方案
<% content_for :body do %>
<% if controller.controller_name == 'home' && controller.action_name == 'demo1' %>
<body data-no-turbolink="true">
<% end %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
fea*_*ool 67
这是一个更清洁的解决方案:
在/app/views/layouts/application.html.erb,<body>用这个替换标签:
<body
<% if content_for?(:body_attributes) %>
<%= yield(:body_attributes) %>
<% end %>>
Run Code Online (Sandbox Code Playgroud)
现在,如果要在特定视图中禁用turbolinks,例如/app/views/home/index.html.erb,您可以将其添加到文件中:
<% content_for(:body_attributes) do %>
data-no-turbolink="true"
<% end %>
Run Code Online (Sandbox Code Playgroud)
这将最终呈现为:
<body data-no-turbolink="true">
Run Code Online (Sandbox Code Playgroud)
在Rails 5中,语法略有不同:
<% content_for(:body_attributes) do %>
data-turbolinks="false"
<% end %>
Run Code Online (Sandbox Code Playgroud)
这将最终呈现为:
<body data-turbolinks="false">
Run Code Online (Sandbox Code Playgroud)
小智 47
添加“data-no-turbolink” to the <body> tag要禁用的页面
如果你有一个我假设的共享布局文件,你可以做一个if语句并检查params [:controller]和params [:action]并将它添加到一个区域
Ran*_*eir 17
这里的解决方案对我不起作用,结果发现Turbolinks在新版本(5.0.0)中更改了在单个页面上禁用Turbolinks的语法.
要在Turbolinks 5.0.0+页面上禁用它,请添加data-turbolinks="false"到要禁用的页面的链接:
<a href="/link" data-turbolinks="false">Page without Turbolinks</a>
Run Code Online (Sandbox Code Playgroud)
它也适用于任何链接的祖先,因此在这个例子中,这两个链接都将导致非涡旋链接的页面:
<div data-turbolinks="false">
<a href="/link1">Page without Turbolinks</a>
<a href="/link2">Another page without Turbolinks</a>
</div>
Run Code Online (Sandbox Code Playgroud)
要在单个链接上启用它,并在特定元素中禁用所有其他链接:
<div data-turbolinks="false">
<a href="/link1">Page without Turbolinks</a>
<a href="/link2">Another page without Turbolinks</a>
<a href="/link3" data-turbolinks="true">Page with Turbolinks enabled</a>
</div>
Run Code Online (Sandbox Code Playgroud)
我也尝试将它添加到我希望它禁用的页面的主体上,类似于旧方法,但使用data-turbolinks="false"而不是data-no-turbolink="true"- 并且也有效!
资料来源:GitHub上的Turbolinks
Abr*_*ram 11
只是一个稍微修改过的fearless_fool的答案版本,由于空格和引号而呈现出奇怪的结果:
Application.html.erb
<body <%= yield(:body_attributes) %>>
Run Code Online (Sandbox Code Playgroud)
View.html.erb
<%= content_for(:body_attributes, 'data-no-turbolink') %>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
27186 次 |
| 最近记录: |