0

您好,我有工作后端,例如我能够管理/backend/category/1等类别 ,但我还需要让用户列出产品.. 所以如果用户输入/category/1(类别 1 的产品列表)什么html.erb和我如何向他展示或者我需要 2 个控制器?我是初学者,所以请以某种简单的方式告诉我谢谢:-)

我的想法是像 /category/1 这样的 url - 列出类别 1 的所有产品

/category/1/product/2 - 将显示产品 2 信息

或者

/category/1/2 - 我不知道什么是最佳实践或推荐:p

URL 看起来不是优先级,重要的是用户无权向后端类别控制器显示操作。

4

1 回答 1

0

您不需要单独的控制器,您可以单独阻止视图/操作。一种常见的方法是在某些操作之前运行过滤器。这样您就可以将身份验证和控制器逻辑分开。

如果您想要一种/backend仅对您自己可用的简单方法,我建议您按照Rails 文档中给出的基本 http auth示例进行操作。您定义哪些操作需要密码的行是:

http_basic_authenticate_with name: "dhh", password: "secret", except: :index

它说要阻止 index. 您可以使用

http_basic_authenticate_with name: "dhh", password: "secret", only: :edit

我不推荐使用后者,因为这样很容易忘记阻止一个动作。

如果您user的 Rails 应用程序中有一个模型来存储用户是否是管理员,那么它的工作方式非常相似。让我们假设您的模型回答user.admin?. 然后您的设置将类似于:

# app/controllers/categories_controller.rb
class CategoryController < ApplicationController
  before_filter :require_admin, except: [:index]
  # …
end

# app/helpers/sessions_helper.rb
module SessionsHelper
  def require_admin
    redirect_to(root_url) unless current_user && current_user.admin?
  end
end

railstutorial.org上很好地介绍了设置会话助手、控制器等

于 2013-08-06T16:18:47.023 回答