0

我有一个使用 Ruby 2.5.3 和 Stimulus 1.1.1 框架的 Rails v5.2.4 应用程序。我在我的 Rails 控制器中设置了一些 cookie,并从 Stimulus 控制器访问它们,但是当我第一次加载页面时,我得到:

ReferenceError: Cookies is not defined
    at Controller.connect (summary_controller.js:92)
    at Context.connect (context.js:23)

但是当我重新加载同一页面时,我得到了 cookie 值并且一切正常。我没有使用任何 gem 来处理 cookie。

我的stimulusjs方法与相应的行号是:

91  connect(){
92    var tech_and_monitor = Cookies.get('tech_and_monitor');
93    var tech_only = Cookies.get('tech_only');
95    var manager_only = Cookies.get('manager_only');
96    }

在第一次加载时,当我在浏览器上使用实时表达式时,Cookies.get('tech_and_monitor');我得到了 cookie 值。

我不明白为什么我在第一次加载时没有得到对 Cookies 的引用而在第二次加载时没有得到它的引用?

4

1 回答 1

0

我发现负责不在 Rails 应用程序中加载 JavaScript 的东西是Turbolinks。所以我在调用它的按钮中禁用了 Turbolinks,并且 JavaScript 也是第一次加载。

 <%= link_to "More Page", more_page_path, data:{turbolinks: false}, class: "nav-item nav-link"%>

于 2019-12-20T16:23:23.333 回答