使用用户模型创建枚举
class User < ActiveRecord::Base
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
enum role: [:user, :manager]
has_many :tickets
end
当我将sign_up作为user.manager时,我收到错误
undefined method `manager?' for nil:NilClass
我的观点 _header.html.haml
%div
.navbar.navbar-fixed-top.navbar-inverse
%ul
-if user_signed_in?
%li= link_to 'New ticket', new_ticket_path, class: 'btn btn-danger'
%li= link_to 'Log out', destroy_user_session_path,
class: 'btn btn-primary',
method: :delete
-elsif current_user.manager?
%li= link_to 'All tickets', '#'
-else
%li= link_to 'Sign up', new_user_registration_path, class: 'btn btn-primary'
%li= link_to 'Log in', new_user_session_path, class: 'btn btn-primary'
答案 0 :(得分:2)
-if user_signed_in?
# skipped
-elsif current_user.manager?
# skipped
您撰写的内容不合逻辑,因为current_user
仅在用户登录时定义。
当没有用户登录时,会调用elsif
,因此显然会抛出错误,因为它正在调用nil
上的方法(no {{ 1}})。
答案 1 :(得分:1)
要添加%div
.navbar.navbar-fixed-top.navbar-inverse
%ul
-if user_signed_in?
= content_tag :li, link_to('New ticket', new_ticket_path, class: 'btn btn-danger')
= content_tag :li, link_to('Log out', destroy_user_session_path, class: 'btn btn-primary', method: :delete)
= content_tag :li, link_to('All tickets', '#') if current_user.manager?
-else
= content_tag :li, link_to('Sign up', new_user_registration_path, class: 'btn btn-primary')
= content_tag :li, link_to('Log in', new_user_session_path, class: 'btn btn-primary')
的答案,您需要使用以下内容:
{{1}}