Hola amigos, necesito de su ayuda
Tengo el siguiente problema:
Estoy usando Cancancan, pero cuando llamo a la acción de index funciona bien, pero cuando intento llamar a new, me muestra:
Completed 500 Internal Server Error in 10ms (ActiveRecord: 1.2ms)
ArgumentError - wrong number of arguments (given 1, expected 0): actionpack (4.2.1) lib/action_controller/metal.rb:131:in `initialize'
actionpack (4.2.1) lib/action_dispatch/routing/url_for.rb:104:in `initialize'
actionview (4.2.1) lib/action_view/layouts.rb:355:in `initialize'
cancancan (2.0.0) lib/cancan/controller_resource.rb:80:in `new'
No entiendo que sucede, alguien me puede ayudar
**Este es mi applicationController.rb**class ApplicationController < ActionController::Base # Prevent CSRF attacks by raising an exception.
# For APIs, you may want to use :null_session instead.
protect_from_forgery with: :exception
include CodigosGenerales
before_action :cargarOpcionesDelPrincipal
layout :colocar_layout
helper_method :resource, :resource_name, :devise_mapping
before_filter do
resource = controller_path.singularize.gsub('/', '_').to_sym
method = "#{resource}_params"
params[resource] &&= send(method) if respond_to?(method, true)
end
rescue_from CanCan::AccessDenied do |exception|
respond_to do |format|
format.json { head :forbidden, content_type: 'text/html' }
format.html { redirect_to root_path, alert: 'No tiene autorización para acceder' }
format.js { head :forbidden, content_type: 'text/html' }
end
end
def current_ability
controller_name_segments = params[:controller].split('/')
controller_name_segments.pop
controller_namespace = controller_name_segments.join('/').camelize
Ability.new(current_usuario, controller_namespace)
#Ability.new(current_usuario)
end
def resource_name
:usuario
end
def resource
@resource ||= Usuario.new
end
def devise_mapping
@devise_mapping ||= Devise.mappings[:usuario]
end
private
def after_sign_out_path_for(resource_or_scope)
new_usuario_session_path
end
def configure_permitted_parameters
devise_parameter_sanitizer.permit(:sign_up) { |u| u.permit(:username, :email, :password, :password_confirmation, :remember_me) }
devise_parameter_sanitizer.permit(:sign_in) { |u| u.permit(:login, :username, :email, :password, :remember_me) }
devise_parameter_sanitizer.permit(:account_update) {
|u| u.permit(:nombre,
:apellido,
:email,
:password,
:password_confirmation,
:current_password,
:cedula,
:numero_excel,
:historia,
:estado,
:apellido,
:telefono_habitacion,
:telefono_trabajo,
:celular1,
:celular2,
:email2,
:fecha_nacimiento,
:ava,
:hong,
:berm,
:john,
:asp,
:blom,
:rol ) }
end
end**este es mi archivo model/ability.rb**class Ability include CanCan::Ability
def initialize(user, controller_namespace)
user ||= Usuario.new # guest user (not logged in)
can :manage, :welcome_con
case controller_namespace
when "Administrator"
if user.rol == 1
can :manage, Administrator::FaqsController
can :manage, Administrator::TipsController
end
if user.rol == 2
can :manage, :admin_vacunas
can :manage, Administrator::ConfigurationsController
can :manage, Administrator::ContactosController
can :manage, Administrator::HomeTratamientoController
can :manage, Administrator::VacunasController
end
when "paciente"
if user.rol == 3
can :manage, Paciente::HomeController
end
else
can :read, :all
end
end
end**Y este es mi controlador:**
class Administrator::FaqsController < ApplicationController include CodigosGenerales
before_filter :authenticate_usuario!
before_action :cargarOpcionesDelPrincipal
load_and_authorize_resource :class => Administrator::FaqsController
layout "administrator"
def index
@faqs = Faq.all.order('created_at desc')
if @faqs.empty?
flash.now[:warning] = "Aún no se han creado preguntas y respuestas"
end
end
def show
@faq = Faq.find(params[:id])
end
def new
@faq = Faq.new
end
def edit
@faq = Faq.find( params[:id] )
end
def create
@faq = Faq.new(faq_params)
@faq.usuario_id =
current_usuario.id respond_to do |format|
if @faq.save
format.html { redirect_to administrator_faq_path(@faq), notice: 'La pregunta fue creada exitosamente' }
format.json { render :show, status: :created, location: @faq }
else
format.html { render :new }
format.json { render json: @faq.errors, status: :unprocessable_entity }
end
end
end
def update
@faq = Faq.find params[:id]
@faq.usuario_id =
current_usuario.id respond_to do |format|
if @faq.update(faq_params)
format.html {redirect_to administrator_faq_path(@faq), notice: 'La pregunta fue modificada exitosamente' }
format.json { render :show, status: :ok, location: @faq }
else
format.html { render :edit }
format.json { render json: @faq.errors, status: :unprocessable_entity }
end
end
end
def destroy
@faq = Faq.find params[:id]
@faq.destroy
respond_to do |format|
format.html { redirect_to administrator_faqs_path(@faq), notice: 'La pregunta fue eliminada exitosamente.' }
format.json { head :no_content }
end
end
private
def set_faq
@faq = Faq.find(params[:id])
end
def faq_params
params.require(:faq).permit(:pregunta, :respuesta)
end
end