Ruby на Rails и MathJax - как мне принудительно перезагрузить страницу, чтобы мой mathjax отображался? - PullRequest
0 голосов
/ 03 августа 2020

Я использую rails v6.0.3.2 и ruby 2.7.1. Я помещаю текст в расширенные текстовые поля ActionText. Мой mathjax не отображается при первой загрузке страницы. Он отображается, если я обновляю sh страницу. Мне нужно либо (1) убедиться, что mathjax отображается при первой загрузке страницы, либо (2) принудительно перезагрузить страницу. Очевидно, что первое лучше. *) (но это не сработало):

(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);
})();

В моем приложении. html .haml view Я загружаю 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 «динамический c» или, в качестве альтернативы, принудительно обновить страницу sh при первой загрузке страницы?

1 Ответ

0 голосов
/ 04 августа 2020

Мой новый ответ

Думаю, я нашел лучший ответ на свою проблему. Следуя этому предложению SO , я аннулирую кеш рельсов после обновления (используя обратный вызов after_action). Теперь кажется, что он обрабатывает mathjax, не разрушая то, что уже есть.

Мой предыдущий ответ

Прочитав документацию по turbolinks здесь , я узнал чтобы я мог вставить в свое приложение следующий метатег. html .haml файл, чтобы принудительно перезагрузить страницу:

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

На самом деле это версия haml: %meta{:content => "reload", :name => "turbolinks-visit-control"}/

Проблема в том, что если я редактирую страницу, на которой уже есть mathjax, разделители удаляются, и мне приходится повторно вводить их как часть моего редактирования (что делает это королевской болью ). Этого не произошло, пока я не добавил метатег.

Я могу это терпеть, но если кто-то может предложить лучший способ, я все уши.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...