lj3368
@lj3368 (Tero)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

Gemのgonがincludeできない

解決したいこと

Gemのgonを導入しましたが、エラーになってしまい使用することができません。

行った手順

Gemfileにgem 'gon'記述、bundle install
(Gemfile.lockには入っていました)

views/layouts/application.html.erb

 <head>
    <%= csrf_meta_tags %>
    <%= csp_meta_tag %>

    <%= include_gon %>     ← ここに記述

    <%= javascript_pack_tag 'application' %>
    <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>
    <meta name="viewport" content="width=device-width,initial-scale=1">
    <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/3.6.0/chart.min.js" integrity="sha512-GMGzUEevhWh8Tc/njS0bDpwgxdCJLQBWG3Z2Ct+JGOpVnEmjvNx6ts4v6A2XJf1HOrtOsfhv3hBKpK9kE5z8AQ==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
  </head>
コントローラー

  def new
    @document = Document.new
    @sheets = current_user.sheets.all
    gon.sheets = @sheets     ← ここに記述
  end

発生している問題・エラー

NameError 
undefined local variable or method `include_gon' for...

試してみたこと

  • head内ではなくbody内のjs読み込み部分の上でinclude
  • <%= include_gon %> を <%= Gon::Base.render_data %> に変更

互換性や読み込み順序などに問題があるのでしょうか。
エラーの原因がわからず手詰まりなので、他に確認するべきことがありましたら教えていただきたいです。

少し気になっている部分

javascript/packs/application.js の並び順

require("jquery")
require("@rails/ujs").start()
require("turbolinks").start()
require("@rails/activestorage").start()
require("channels")
require("@nathanvda/cocoon")
require("bootstrap/dist/js/bootstrap")
0

1Answer

Your answer might help someone💌