неопределенная локальная переменная или метод 'gon' для ApplicationController: класс в рельсах 4.2

76
8

Кажется, я не могу заставить gon gem работать с рельсами 4.2.0. Я получаю "неопределенную локальную переменную или метод" gon "для #" Я использую ее правильно? Также у меня есть <% = include_gon (: init => true)%> в заголовке моего макета application.html.erb.

ApplicationController

  class ApplicationController < ActionController::Base 
gon.current_user_rolename = current_user.role.name
end

application.js

 if(gon.current_user_rolename == 'Admin'){
alert('success');
}

Application.html.erb

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<%= include_gon(:init => true) %>
<%= Gon::Base.render_data({}) %>
<!-- Main css styles -->
<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true %>
<!-- Main javascript files -->
<%= javascript_include_tag 'application', "http://localhost:9292/faye.js", 'data-turbolinks-track' => true %>
<%= csrf_meta_tags %>
</head>
<body >
<%=yield%>
</body>

спросил(а) 2021-01-28T02:29:38+03:00 3 месяца, 1 неделя назад
1
Решение
87

Поместите этот код в метод. Например:

def methodname
gon.current_user_rolename = current_user.role.name
end

Это не будет работать, если вы определяете вне метода

Также поместите эти строки следующим образом в application.html.erb ниже строки csrf_metags:

 <%= csrf_meta_tags %>
<%= include_gon(:init => true) %>
<%= Gon::Base.render_data({}) %>

ответил(а) 2021-01-28T02:29:38+03:00 3 месяца, 1 неделя назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема