我为 2 个不同的用户角色使用 2 组不同的 View 。 我正在使用 register_alias :
Mime::Type.register_alias "text/html", :basic
在 Controller 中:
class SomeController < ApplicationController
def index
# …
respond_to do |format|
format.html # index.html.erb (advance)
format.basic # index.basic.erb
end
end
end
在某些情况下,我必须在两个 View 中使用相同的代码,然后我会使用 Partial,但由于 MIME 别名,我必须使用 2相同的部分: my_partial.html.erb 和 my_partial.basic.erb
我认为有一个解决方案可以干燥代码并仅使用部分代码。
你有解决办法吗?
谢谢你, 亚历山德罗
最佳答案
旧答案:
我可能尝试了 50 种不同的方法,直到找到一次编写部分代码的正确方法,但这是值得的,因为它非常简单:
在索引 View 中,您通常会执行以下操作:
<%= render "my_partial" %>
这会隐式映射到与您请求的 Mime 相对应的部分,因此这意味着有两个部分实现。如果您想要 DRY 部分,只需明确指定格式:
<%= render "my_partial.html" %>
作为此观察的额外好处,如果您的 responds_to
代码块实际上只是根据格式进行切换并且内部没有逻辑,那么您可以完全删除该代码块和其他内容仍然隐式工作。
Rails 3.2 更新:
Rails 已弃用对上述内容的支持,并且最新版本的 Rails 中已完全删除支持。以下是从 Rails 3.2 开始的正确方法:
<%= render :partial => "my_partial", :formats => [:html] %>
关于ruby-on-rails - 如何在具有不同别名 MIME 的 View 中使用部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3164859/