突然,我在提交表单时开始收到此错误。我所做的唯一更改是调用在 ApplicationController 中定义的方法,该方法被标记为 helper。
应用程序/控制器/application_controller.rb
class ApplicationController < ActionController::Base
protect_from_forgery
helper_method :is_org_admin?
#Check if current user is Admin in current organization or not
def is_org_admin?
session[:current_organization].is_admin?(current_user)
end
end
是管理员吗?定义为
class Organization < ActiveRecord::Base
has_many :memberships
has_many :users, through: :memberships
def is_admin?(user)
member = memberships.where(user_id: user.id).first
if member.nil?
false
else
member.is_admin?
end
end
end
is_org_admin 呢?正在从视图模板调用方法
应用程序/视图/用户/index.html.haml
%h1 Users
- if is_org_admin?
%p= link_to 'Invite new user', new_invitation_path
如果我在 ApplicationController 中删除protect_from_forgery
或调用if is_org_admin?
index.html.haml 中的辅助方法,它会起作用。但是当我启用protect_from_forgery
或调用 ApplicationController 中定义的帮助程序的条件时,它会发出警告并显示您需要登录或注册,然后才能继续在页面上发送消息。
有人可以建议这里有什么问题吗?