我在我的 rails 应用程序中使用 Cancan + Devise:
当我尝试更新评论记录时会出现问题,我猜nil
即使我已登录,initialize 方法的用户参数也总是会出现:
能力.rb
class Ability
include CanCan::Ability
def initialize(user)
user ||= User.new # guest user
unless user.nil?
if user.role.name == "admin"
can :manage, :all
elsif user.role.name == "atendimento"
can :manage, Comment
end
end
end
end
Better_errors
最后它引发了这个错误。
每个人都面临这个问题?任何人都可以帮助我吗?
Rails 3.2.8 设计 2.1.0 CanCan 1.6.9 Ruby 1.9.3p385
编辑 1
评论控制器.rb
class CommentsController < ApplicationController
authorize_resource :only => [:index, :show,:new,:edit, :create,:update,:destroy, :approve, :moderate, :disapprove]
layout "admin"
编辑 2
嘿伙计们,当控制器收到 ajax 请求时,CanCan 可以正常工作。
评论.js
var request = $.ajax({
url: url_to_request,
type: "PUT",
data: {id : id_to_send, answer : answer_to_send, question : question_to_send },
dataType: "json"
});
配置/路由.rb
resources :comments do
member do
put 'approve'
put 'moderate'
put 'disapprove'
end
end