0

デバイスの SessionController を上書きしました:

app/controllers/customers/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

しかし、destroy メソッドを直接上書きしてコードの後に​​追加しても、カートは決して破棄されません。カートは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

私がdeviseで使用しているモデルはClient 、deviseコントローラーでカートを破壊できないのはなぜですか? ビュー/顧客/セッションを使用できないのはなぜですか?

読んでくれてありがとう。

4

2 に答える 2

1

あなたはいつでもやろうとすることができます

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

しかし、最初に、devise のコントローラーを正しく上書きしたことを確認する必要があるかもしれません。

変更が表示されないのは、コントローラー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ではなく名前空間を使用しています- ただのタイプミスですか?customersessions: 'customers/sessions'

于 2013-08-05T10:47:35.213 に答える
0

スペルに注意してください。before_filterが存在しないメソッドを呼び出しています。

ここに画像の説明を入力

于 2013-07-25T21:31:11.617 に答える