我的设计SessionController被覆盖:
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
我的routes.rb是:
devise_for :clients, :controllers => { sessions: 'customers/sessions'}
devise_scope :client do
root to: "customers/Sessions#new"
end
我与设计一起使用的模型是Client
为什么我不能在设计控制器中销毁推车?
以及为什么我不能使用视图/客户/会话,如果它说的文件我可以/必须这样做?
答案 0 :(得分:0)
注意拼写。 before_filter
正在调用一个不存在的方法。
答案 1 :(得分: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'}
最后一个问题是:
“为什么我不能使用视图/客户/会话,如果它说我可以/必须这样做的文档?”
您在这里有一个拼写错误,您在routes.rb [customers
]中使用的是customer
命名空间,而不是sessions: 'customers/sessions'
- 只是一个错字?