繁体   English   中英

Rails 和 MathJax 上的 Ruby - 如何强制页面重新加载,以便我的 mathjax 将呈现?

[英]Ruby on Rails & MathJax - how do I force page reload so my mathjax will render?

我正在使用 rails v6.0.3.2 和 ruby 2.7.1。 我将文本放入 ActionText 富文本框中。 当页面首次加载时,我的 mathjax 没有呈现。 如果我刷新页面,它就会呈现。 我需要(1)确保mathjax在页面首次加载时呈现,或者(2)强制重新加载页面。 显然前者更好。

我在这里的 mathjax 文档中读到,我可以使用以下 javascript(我放入我的 application.js)来完成前者(但它不起作用):

(function () {
  var script = document.createElement("script");
  script.type = "text/javascript";
  script.src  = "https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/latest.js?config=TeX-MML-AM_CHTML";
  document.getElementsByTagName("head")[0].appendChild(script);
})();

在我的 application.html.haml 视图中,我加载了 mathjax CDN 以及一些代码以启用单美元符号表示法:

:plain
      <!--               MathJax                   -->
      <!-- This implements single $ as a delimiter -->
      <!-- This MUST come before the CDN reference below -->
      <script type="text/x-mathjax-config">
        MathJax.Hub.Config({
        tex2jax: {inlineMath: [['$','$'], ['\\(','\\)']],
        processEscapes: true}
        });
      </script>

      <!-- Mathjax: latest CDN version -->
      <script type="text/javascript" async
        src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/latest.js?config=TeX-MML-AM_CHTML">
      </script>

如何启用 mathjax 的“动态”渲染,或者在页面首次加载时强制刷新页面?

我的新答案

我想我找到了一个更好的答案来解决我的问题。 按照这个SO 建议,我在更新后使 rails 缓存无效(使用 after_action 回调)。 它现在似乎在重新处理 mathjax 而不破坏已经存在的东西。

我以前的回答

这里阅读 turbolinks 文档,我了解到我可以在我的 application.html.haml 文件中插入以下元标记来强制页面重新加载:

<head>
  ...
  <meta name="turbolinks-visit-control" content="reload">
</head>

实际上这是haml版本: %meta{:content => "reload", :name => "turbolinks-visit-control"}/

问题是,如果我编辑一个已经存在 mathjax 的页面,分隔符会被剥离,我必须在编辑过程中重新输入它们(这使得它非常痛苦)。 在我添加元标记之前,这并没有发生。

我可以容忍这一点,但如果有人能提出更好的方法,我会全力以赴。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM