多个视图相同模型

时间:2015-06-02 18:47:11

标签: ruby-on-rails ruby ruby-on-rails-3

我有一个课程模型,以一种宁静的方式进入控制器和视图。

对于我的课程秀,它功能齐全。我现在想要另一个课程节目,它将有一个简化页面,就像原来的课程节目一样。

我该如何实现?我希望它是安静的,所以在我的控制器中应该只有show,update,index等。

我应该创建另一个与模型名称不同的控制器吗?例如。 Course2?

2 个答案:

答案 0 :(得分:1)

如果是管理视图与公共视图,我将为两个不同的RESTful控制器提供完全不同的命名空间。或者,如果您认为自己有很多摘要与完整视图相关的东西,请根据这种区别创建名称空间。

另一种选择是在单个ERB模板中编码差异。或者你可以让show动作使用一些条件逻辑从同一个动作渲染不同的模板。

虽然没有更多的背景,我不能说真正的选择是什么。我个人反对创建非RESTful动作,除非它真的是一次性的事情。非RESTful操作往往会失去我的经验,控制器可能变得非常丑陋和不直观。

答案 1 :(得分:1)

如果这只是显示相同信息的子集或不同排列,那么我认为这是视图的工作。控制器最多可以使用相同的操作,但选择不同的视图进行渲染,例如,如果用户想要查看html与纯文本,则可能会执行此操作。

控制器作业是解释模型,视图作业是收集和显示信息。如果您所描述的“摘要”不仅仅是信息的一个子集,例如,如果您开始计算行进的距离或需要多长时间,我认为您会担心视图中包含逻辑或者根据提供的数据花费多少,那就不好了。

所以我这只是一个子集,然后我建议根据控制器设置的某个变量渲染部分,或者如果显示器的组织需要大不相同,那么控制器可以选择不同的模板进行渲染。