CookiesEu gem添加cookie同意后按OK不会消失

时间:2019-05-06 00:00:20

标签: ruby-on-rails cookies rubygems

因此,我已将CookiesEu gem添加到我的应用程序中以添加Cookie同意。但是问题是文本:Cookies help us deliver our services. By using our services, you agree to our use of cookies. OK Learn more在按下OK按钮后仍然在视线范围内。而我希望它在按OK后消失。

在文档中说:This gem uses a cookie called cookie_eu_consented to track whether a user has accepted the cookie notice and whether it needs to be shown again or not.但是,即使接受了cookie,也会显示cookie通知。

p.s。我将= render 'cookies_eu/consent_banner', link: '/cookies'放在页脚

2 个答案:

答案 0 :(得分:1)

请确保

//= require cookies_eu
在您运行后,

已添加到您的application.js bundle exec rails g cookies_eu:install

答案 1 :(得分:1)

如果您使用的是Rails 6或更高版本,现在可以使用webpacker交付JavaScript。这会破坏当前的文件结构,并导致通常会处理“确定”按钮的JavaScript失败。

您可以在下面找到解决方案:

要使其与Webpacker一起使用。您必须将JavaScript代码作为Webpack依赖项导入,而不是在视图的标签中嵌入JS。

第一步:

确保以下标记在您的布局中:

   <%= stylesheet_pack_tag 'application' %>
   <%= javascript_pack_tag 'application' %>

第二:

就像自述文件中一样横幅HTML应该在您的布局/视图中,即<div id="cookies-eu-banner" style="display: none;">...</div>

第三:

添加一个JS文件,用于在app / javascript /(但不是app / javascript / packs)中的某处初始化横幅,例如app / javascript / src / add-banner.js。在这里,您将导入库(如果需要,还可以导入CSS)并在DOM内容加载后对其进行初始化:

// app/javascript/src/add-eu-banner.js

import CookiesEuBanner from 'cookies-eu-banner'
import 'cookies-eu-banner/css/cookies-eu-banner.default.css'

document.addEventListener('DOMContentLoaded', () => {
  new CookiesEuBanner(() => {
    console.log('Cookies EU Banner accepted');
  })
})

最后:

通过在“ application.js”打包文件中添加导入语句,将该文件添加为webpack依赖项:

// app/javascript/packs/application.js

import '../src/add-eu-banner'

如果您使用的Rails版本低于6,建议您发布代码,以便人们可以更深入地研究您的问题。