【问题标题】:Rails: restructuring view files for different MIME typesRails:为不同的 MIME 类型重构视图文件
【发布时间】:2012-05-20 15:57:00
【问题描述】:

所以我有一个 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 提出了类似的问题。但我对答案并不满意,因为它很慢,并且不能解决我常见的部分问题。

【问题讨论】:

    标签: ruby-on-rails view mime-types


    【解决方案1】:

    我认为你只是为了有一个更清晰的视图目录结构而把事情复杂化了。

    首先,我建议不要将 JSON 与 HTML 问题与网络与移动设备与平板电脑问题混为一谈。 “Mobile”或“tablet”不是 mime 类型,我不会破解 Rails 基于 mime 类型的视图功能来解决这个问题。

    在我们公司,我们对不同的 mime 类型 (json/html) 使用不同的视图,并且我们使用一个 HTML 视图,该视图根据设备类型在内部分叉。在三组视图中反映模型/控制器更改会很烦人,每种设备类型一组。大多数情况下,观点是相同的,或者只是略有不同。我们使用mobvious-rails gem 根据设备分叉视图代码。这不是更好的解决方案吗?

    【讨论】:

    • 我认为这是支持不同设备的通用方式,请查看此链接railscasts.com/episodes/199-mobile-devices。我也喜欢 mobvious-rails 的想法,但它增加了视图部分的复杂性。如果有 MIME 类型,HTMLers 将有更好的控制和更少的逻辑。
    猜你喜欢
    • 1970-01-01
    • 2011-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多