Я реализовал Devise для аутентификации и авторизации в приложении ROR, все выглядит нормально, но возникает одна проблема.У меня есть два модальных режима: «Учетная запись» и «Транзакция», и, соответственно, два контроллера.
В представлении «Мой индекс транзакций» вызывается один из методов контроллера аккаунта, подобный этому
$.post("accounts/our_miles_balance/?account_number="+$("#account_number").val(),function(data)
{
$("#our_miles_balance").val(data);
});
Когда запускается этот ajaxвыдает следующую ошибку и выходит из системы администратор
Вам необходимо войти в систему или зарегистрироваться, прежде чем продолжить
Вот мой класс способностей
class Ability
include CanCan::Ability
def initialize(user)
user ||= User.new # guest user
if user.role == 1 #admin
can :manage, :all
can :read, :all
elsif user.role == 2 #Vendor
can :manage, VendorTransaction
can :index, Account
end
end
end
Что я делаю не так с ней, пожалуйста, помогите ....
Редактировать
Хорошо Вот мой контроллер транзакций
require 'csv'
class TransactionsController < ApplicationController
load_and_authorize_resource
helper_method :sort_column, :sort_direction
respond_to :html, :js
def index
per_page = 40
@transactions = Transaction.search(params[:id]).order(sort_column + " " + sort_direction)
respond_to do |format|
format.html # index.html.erb
format.csv { render :csv => @transactions}
end
И контроллер аккаунта
class AccountsController < ApplicationController
load_and_authorize_resource
helper_method :sort_column, :sort_direction
def index
@accounts = Account.search(params[:program_id]
respond_to do |format|
format.html # index.html.erb
format.json { render :json => @accounts}
end
def our_miles_balance
a = Account.find_by_account_number(params[:account_number])
@miles = Account.our_miles_balance(a.id) if ?a!=nil
respond_to do |format|
format.json { render json: @miles}
end
end
end