将新控制器添加到 Rails 上的 Ruby 4 Spree -Ecommerce 应用程序

Adding NEW controller to a Ruby on Rails 4 Spree -Ecommerce application

我正在尝试在 Rails 4 Spree -Ecommerce 应用程序上添加一个新控制器 Ruby。首先,在 routes.rb 中添加了 root :to => 'login#login',然后在 app/controllers/ 中添加了一个名为 login_controller.rb 的文件,并在该文件中添加了以下代码。

module Spree
  class LoginController < Spree::StoreController
   def login
        render('spree/shared/_login')
    end
  end
end

当我启动服务器并转到 localhost:3000/ 时出现此错误

无法自动加载常量 LoginController,预期 superclass mismatch for class LoginController

我的目标是要求登录才能查看商店的主页。我正在尝试建立一个网站,用户在访问该网站时会看到一个登录屏幕,除非他们已经登录。

请注意,我是 ruby 菜鸟,这实际上是我在 rails 申请中的第一个 ruby,所以我在这里完全一无所知。

此外,如果有比我当前的方法(有一个 LoginController 检查是否有用户登录 -如果是重定向到主页,如果不是重定向到登录)请告诉我。

P.S。我从狂欢 gem

中的 home_controller.rb 得到了控制器的布局

我想如果你在 Spree 模块中,你不需要超类 class LoginController < Spree::StoreController 的命名空间,就像这样 class LoginController < StoreController.

我没有测试代码,但我建议你使用 Spree 的 Devise integration 然后您可以添加一个前置过滤器强制身份验证。创建一个 decorator 来包含这个逻辑加法。使用以下代码在 app/controllers/spree 中创建一个名为 base_controller_decorator.rb 的文件:

Spree::BaseController.class_eval do 
  before_filter :check_logged_in
  def check_logged_in
    unless spree_current_user 
      redirect_to spree_login_path
    end 
  end 
end