所以我有一个Rails应用程序,它响应HTML,XML,JSON,移动设备,平板电脑......等等。让我说我有“预订”资源。当然,这个资源需要“index.html.erb”,“show.html.erb”,“new.html.erb”,“edit.html.erb”,“_ form.html.erb”和其他自定义函数。正如您所看到的,“views / books”文件夹最终会出现许多混乱文件。我希望能够在“views / books”文件夹中的子文件夹中分隔它们:
views/books/json
views/books/mobile
views/books/web
views/books/tablet
如何在不弄乱我的控制器的情况下做到这一点?控制器操作执行和视图执行之间是否有回调(过滤器)?如果有,那应该解决这个问题。
在我的应用程序中使事情变得更复杂的是我想在一些MIME中重用一些部分,例如我想将“_login.erb”用于移动,Web和平板电脑。然后,使用CSS自定义它。
提出类似的问题here。但我对答案并不满意,因为它很慢并且无法解决我常见的局部问题。
答案 0 :(得分:0)
我认为你只是为了拥有一个更清晰的视图目录结构而使事情变得复杂。
首先,我建议不要将JSON与HTML问题混合在网络与移动与平板电脑问题上。 “移动”或“平板电脑”不是mime类型,我不会破解Rails基于mime类型的视图功能来解决这个问题。
在我们公司,我们对不同的mime类型(json / html)使用不同的视图,我们使用一个基于设备类型分叉的HTML视图。在三组视图中反映模型/控制器的变化是很烦人的,每种视图对应一种设备类型。大多数情况下,观点是相同的或只是微小的差异。我们使用mobvious-rails gem来根据设备分叉视图代码。这不是一个更好的解决方案吗?