1

デバイスマーチャントモデルを備えた機能的なアプリケーションがあり、登録コントローラーを上書きしたため、次のようなフォルダー構造があります

app/controllers/merchants/registrations_controller.rb

今、私は製品と呼ばれる新しいコントローラーを追加して、次のようなものを作成しようとしています

app/controllers/merchants/registrations_controller.rb
app/controllers/merchants/products_controller.rb

私が演じるとき

rails g controller

必要なすべてのファイルを取得しましたが、何らかの理由で、このエラーが原因でレーキまたはジェネレーターを実行できません

undefined method `devise' for #<Class:0x007f929f5b5408>

これは、新しいコントローラーをデバイスフォルダー、この場合はマーチャントフォルダーに追加すると発生します...これを実行できない、または実行すべきではない理由はありますか?

どうすればこれを達成できますか? たぶん、これを行うためのより良いアプローチがあります...もしそうなら、それを知っておくとよいでしょう;)

更新: 目標は、マーチャント フォルダーの下のマーチャントに関連するすべてのコントローラーをグループ化することです。また、この問題は app/helpers/merchants/products_helper.rb で生成されたヘルパー ファイルによって生成されることがわかったので、このファイルを削除すると例外が消えます.. 。 しかし、なぜ?

4

1 に答える 1

0

products_controller をデバイスのマーチャント フォルダに追加したのはなぜですか? 目標が製品コントローラーのマーチャントを認証することである場合は、次の方法で行います。

いつものように product_controller.rb を app/controller/ に置き、このフィルターを入れます:

before_filter authenticate_merchant!

これが route.rb にあることを確認します (カスタム登録コントローラー用):

devise_for :merchants, :controllers => {:registrations => "merchants/registrations"}
于 2012-05-10T21:56:57.713 に答える