将新控制器添加到 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
我正在尝试在 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