![]() |
1
17
Possible Duplicate of Changing view formats in rails 3.1 (delivering mobile html formats, fallback on normal html) 然而,我也遇到了同样的问题,并提出了一个相当优雅的解决方案,完全满足了我的需求。这是我从另一个帖子得到的答案。 template inheritance ,这正是我们需要的东西,像这样的工作。我真的不太相信这个实现,因为它的所有内容都在赖安贝茨的铁路诈骗链接中。 所以基本上就是这样。
在中创建子目录
创建
完成后,如果文件位于移动设备上,则默认为移动视图;如果不存在移动视图,则返回常规模板。 |
![]() |
2
4
你需要做一些事情来连接它,但是好消息是Rails3实际上使它比以前简单得多,你可以让路由器为你做大部分的艰苦工作。 首先,您需要创建一个特殊的路由,为您设置正确的mime类型:
现在您的mime类型已经可以使用了,但是您的控制器可能还不知道您的新mime类型,因此您将看到406个响应。要解决此问题,只需在控制器顶部添加一个mime类型允许值,使用repsond_可以:
目前除了已经讨论过的monkeypatch或非mime模板方法外,没有任何API可以轻松地执行自动回退。您可以使用专用响应程序类更清晰地连接重写。 其他推荐阅读包括: https://github.com/plataformatec/responders http://www.railsdispatch.com/posts/rails-3-makes-life-better |
![]() |
3
3
尝试从.html.erb和iPhone和browser中删除.html将返回到公共文件。 |
![]() |
4
3
此答案对<~3.0.1有效。
Joe的答案是,如果只有一个级别高于默认值,那么只删除.html是可行的,但在实际应用中,在某些情况下我需要5个级别。
Rails核心做出了一些相当广泛的假设,即您只需要一种格式,并且它映射到一个扩展(默认情况下没有扩展)。
为了使这更符合惯例,我提出了以下建议。
另外,此时Rails不会将alias_method_chain报告为已弃用。只是那篇文章。 我不知道 这个答案涉及到一些非常脆弱的find_模板调用实现。特别是假设您只有一种格式,但这是模板请求中所有地方的假设。
|
![]() |
5
2
我处理这件事的方式是
|
![]() |
6
2
如果你的操作系统有符号链接,你可以使用它们。
|
![]() |
7
2
现在我添加了另一个答案,我们已经更新到3.2.X。保留原来的答案,以防有人需要那个答案。但是,我将对其进行编辑,以指导人们使用此版本的当前版本。
|
![]() |
8
2
下面是一个更简单的解决方案:
原来Rails(3.2.11)为:js格式的请求添加了:html回退。其工作原理如下:
这里是ActionView::LookupContext#formats=,
和 |
![]() |
9
1
是的,我很确定这是在rails中正确的方法。我以前就这样定义过iphone格式。这是一个很好的问题,如果iphone的模板不存在,那么让格式默认为:html。这听起来很简单,但是我认为您必须添加monkeypath来修复丢失的模板错误,或者在呈现之前检查模板是否存在。查看a中显示的修补程序类型 this question
|
![]() |
10
1
下面是另一个如何做到这一点的例子,灵感来自西蒙的代码,但要短一点,也要少一点老套:
在自动加载路径中的某个位置或显式需要:
以上仍然是一个黑客,因为它使用的是私有API,但可能不像Simon最初的提议那么脆弱。 请注意,您需要单独处理布局。您将需要实现一个基于用户代理或类似内容选择布局的方法。将只处理普通模板的回退。 |
![]() |
11
1
Rails 4.1
包括
变体
那么,在你的行动中:
here . |
![]() |
12
0
在这种情况下,您可以将格式设置为html。举例来说,您希望始终在user show方法中使用html
如果您也希望通过示例呈现JSON,可以对您的类型进行一些测试,例如:
|
![]() |
13
0
monkey patch 为此,但现在,我使用了一个更好的解决方案:
与
所以我有一个不同的布局,但是所有的视图都是一样的,在mobile.html.erb布局中,我使用了一个不同的CSS文件。 |
![]() |
14
0
https://github.com/rails/rails/issues/3855 并遵循它的线索/gist/gems。 这就是我在Rails 3.1和引擎上所做的。此解决方案允许您将*.mobile.haml(或*.mobile.erb等)放置在与其他视图文件相同的位置,而不需要两个层次结构(一个用于常规层次结构,另一个用于移动层次结构)。
在我的“基础”引擎中我添加了这个
还有这个
最后,我把这个添加到
用法
我甚至可以使用特定的移动布局,如果我在任何控制器中设置它: 布局“移动”
它将使用
|
![]() |
15
-2
我在应用程序控制器中使用此前置过滤器解决了此问题:
这将移动格式放在可接受格式列表的前面。所以,解决者更喜欢
|
![]() |
cluster1 · 采取独立的新行动的好处是什么? 7 月前 |
|
Robert · 使用JSON或哈希时,将NULL替换为NIL 8 月前 |
![]() |
Fred Willmore · Rails控制器不呈现任何模板 1 年前 |
![]() |
Diogo Amaral · 实现API请求的正确方式 1 年前 |
![]() |
Meknassih · 在控制器方法中分配给模型没有任何作用 1 年前 |
![]() |
Michael Ding · Rails上的默认会话到期问题 1 年前 |
|
Flávio · 基于另外两个生成数组 1 年前 |