Неопределенная локальная переменная или метод `gon'для ApplicationController: класс в rails 4.2
Кажется, я не могу заставить этот камень работать с рельсами 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>
1 ответ
Решение
Поместите этот код в метод. Например:
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({}) %>