基本MVC - 从另一个控制器编辑模型内容

时间:2011-08-25 03:31:43

标签: ruby-on-rails-3 model-view-controller

当试图了解Rails方式和MVC设计模式时,我试图理解一些基本的基础知识。

假设我正在建立一个CMS。我有以下内容:

/Pages
controller
model
view

当请求出现时,它应根据Pages控制器中的URL检查结果,并显示该页面。

现在,让我说我有一个后端,简单地说,管理部分:

Admin
controller - index, edit actions
view

现在,管理部分通过Users模型进行身份验证,因此它不应该有自己的模型(至少我目前没有看到需要)。用户应该能够在Pages模型中编辑内容。这是需要明确说明的吗?它是我在控制器级别渲染的东西,还是应该使用对控制器的AJAX调用?我很难掌握这个过程的确切运作方式。

除了能够编辑Pages之外,我在编辑像Blog模型这样的东西时遇到了类似的问题,因此了解如何实现这一点真是太棒了。

编辑:或者我是否过度复杂,因为他们正在使用相同的(扩展)类?

1 个答案:

答案 0 :(得分:0)

我使用Devise进行用户身份验证。 github上的Devise wiki有一个关于如何向用户配置文件添加简单管理员角色的页面。或者您可以使用CanCan获得完整的授权模型。无论哪种方式,都提供了帮助方法来检查用户的角色。

如果您希望CMS具有相同内容的只读和可编辑视图,我想我只想使用is_admin?控制器动作中的条件,例如new,create,edit,update,destroy。普通用户只能访问索引和显示。

您可以在路由中使用“admin”命名空间(查看路由上的Rails指南),然后将所有这些管理操作放到一个控制器中,保留索引并显示在基本控制器中,然后在管理员中使用before_filter控制器使代码更清洁。

视图模板也可以使用和is_admin? (或类似的)帮助方法,以暴露某些功能/链接等。