2013-07-25 144 views
0

我有色器件SessionController overwrited:如何覆蓋設計控制器?

上的應用程序/控制器/客戶/ sessions_controller.rb

class Customers::SessionsController < Devise::SessionsController 
    before_filter :destroy_cart, only: :destroy 
    def destroy_cart 
     cart = Cart.find(current_client.cart.id) 
     cart.destroy 
    end 

end 

但車是永遠不會被破壞,即使我重寫直接破壞方法和後添加super我的代碼,它的車仍在那裏,在數據庫中(我只需要一次創建購物車,並在用戶再次登錄時創建它,或者在他第一次使用該應用程序時創建一個新的,但我想嘗試它現在就是這樣),就好像不在我的SessionController上讀取我的代碼。

,由於某種原因,即使我有我的看法是這樣的:

app/views/customer/registrations

,我這樣做對的看法,如果我將其更改爲

app/views/devise/registrations

只反映了變化

my routes.rb是:

devise_for :clients, :controllers => { sessions: 'customers/sessions'} 

devise_scope :client do 
    root to: "customers/Sessions#new" 
end 

我用設計的模型是Client 爲什麼我不能在設計控制器中摧毀購物車? 爲什麼我不能使用視圖/客戶/會話,如果它說我可以/必須做的文檔?

感謝您的閱讀。

回答

0

你總是可以嘗試做

def destroy 
    cart = Cart.find(current_client.cart.id) 
    cart.destroy 
    super 
end 

但首先,你可能想確保你確實正確地覆蓋色器件的控制器。

爲什麼你不能看到的變化做app/views/customer/registrations的原因是怎麼一回事,因爲你似乎只覆蓋:sessions控制器,所以你需要改變

devise_for :clients, :controllers => { sessions: 'customers/sessions'}

devise_for :clients, :controllers => { registrations: 'customers/registrations', sessions: 'customers/sessions'}

最後一個問題是:

「w我不能使用視圖/客戶/會話,如果它說我可以/不得不這樣做的文檔? 「

你有一個錯字在這裏,您使用的customers命名空間,而不是在customer routes.rb中[sessions: 'customers/sessions'] - 只是一個錯字

0

看你的拼寫。 before_filter正在調用一個不存在的方法。

enter image description here

+0

謝謝你,但它不是,這是一個mistke,我沒有當我在這裏寫了代碼。 – user2382595