Turbolinks,将javascript限制为一页

时间:2015-05-23 19:55:02

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-4 turbolinks highlight.js

我正在使用highlight.js并应用此代码初始化我在博客应用上的代码片段的语法高亮显示。

以下代码位于我的index.html页面上:

<script>
$(document).on('ready page:load', function() {
  $('pre code').each(function(i, e) {hljs.highlightBlock(e)});
});
</script>

代码段最初应该如下所示:

<pre><code>A
B</code></pre>

在应用新风格后,它变成了这个:

<pre><code class=" hljs">A
B</code></pre>

问题在于,当我尝试在edit.html页面上编辑其中一个帖子时,在编辑器中我获得了程式化版本而不是普通版本,这是我不想要的。我希望新样式仅应用于索引页面。我怎么能做到这一点?

我应该提到我已经生成了一个包含所有包含视图的脚手架:索引,新建,编辑等。

我也安装了jquery-turbolinks gem。

问题就是这样:我加载index.html并获得突出显示的代码。我导航到edit.html并获得突出显示的代码。我刷新了edit.html页面并失去了突出显示(它应该是这样的)。

-------------------------------------------- EDIT-- -----------------------------------

试过这个并且没有用:

在我的aplication.html.erb中: <body data-action="<%= action_name %>" data-controller="<%= controller_name %>">

在我的index.html.erb

<script>
    var data = $('body').data();
    if (data.controller === 'posts' && data.action != 'edit'){
        $(document).on('ready page:load', function() {
            $('pre code').each(function(i, e) {hljs.highlightBlock(e)});
        });
    };
</script>

1 个答案:

答案 0 :(得分:0)

    textField0 = new JTextField();
    textField1 = new JTextField();
    textField2 = new JTextField();
    textField3 = new JTextField();

    String names[] = {"Sample text 1", "Sample text 2", "Sample text 3", "Sample text 4"};

    for (int i=0; i<4; i++) {
        textField[i].setText(names[i]);
    }

然后您可以在脚本中阅读:

<body data-action="<%= action_name %>" data-controller="<%= controller_name %>">