2013-01-02 5 views
4

Во-первых, я вошел в систему по адресу http://example--site.com/shop/walmart/order/1
Если я нажму кнопку «Редактировать», которая создается кодом, подобным этому.Почему я получаю имя Ошибка, когда я использую CanCan

<%= link_to t('.edit', :default => t("helpers.links.edit")), 
       edit_community_order_path(@community, @order), :class => 'btn' %> 

Возврат этой ошибки. Зачем?

Log Error (Name Error!)

Started GET "/shop/walmart/order/1/edit"Processing by OrdersController#edit as HTML 
    Parameters: {"community_id"=>"walmart", "id"=>"1"} 
    [1m[36mCommunity Load (0.5ms)[0m [1mSELECT `communities`.* FROM `communities` WHERE `communities`.`community_name` = 'walmart' AND (`communities`.`deleted_at` IS NULL) LIMIT 1[0m 
    [1m[35mUser Load (0.4ms)[0m SELECT `users`.* FROM `users` WHERE `users`.`id` = 1 AND (`users`.`deleted_at` IS NULL) LIMIT 1 
Completed 500 Internal Server Error in 74ms 

NameError (uninitialized constant Ability::Order): 
    app/models/ability.rb:26:in `initialize' 
    app/controllers/application_controller.rb:21:in `new' 
    app/controllers/application_controller.rb:21:in `current_ability' 

Вот мои коды.

приложение/модели/ability.rb: 26: в `инициализации '

if user 
     can :read, :all 
     can [:create, :destroy], Comment, {:user_id => user.id} 
     can [:create, :update], Community, {:user_id => user.id} 
26>  can [:create, :update], Order, {:user_id => user.id} 
     can [:create, :update], CommunityTopic, {:user_id => user.id} 
    else 
     can :read, :all 

    end 

приложение/контроллеры/application_controller.rb: 21: в new' app/controllers/application_controller.rb:21:in current_ability'

#CanCan 
    private 
    def current_ability 
21>  @current_ability ||= Ability.new(current_user) 
    end 

routes.rb

resources :communities, :path => "shop", do 
    resources :orders, :path => "order" 
end 

orders_controller.rb

load_and_authorize_resource :community, :find_by => :community_name 
load_and_authorize_resource :through => :community, :shallow => true 
….. 
    # GET /orders/1/edit 
    def edit 
    end 

UPDATE:

модели/order.rb

class Order < ActiveRecord::Base 

    attr_accessible :deleted_at, :code, :community_id, :greeting, :user_id, :visible 
    belongs_to :user 
    belongs_to :community 

    acts_as_paranoid 

end 

ответ

2
# is there a models/order.rb? 
class Order 
end 
+0

Да есть. Я добавил дополнительную информацию в конец вопроса :) – cat

Смежные вопросы