ruby-on-rails - 如何在具有不同别名 MIME 的 View 中使用部分?

标签 ruby-on-rails web-applications partial-views

我为 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/

相关文章:

javascript - 部分 html Controller Angular

jquery - 在 ajax 加载的部分 View 中使用 @Ajax.ActionLink 上的 jquery.unobtrusive-ajax.js

ruby-on-rails - 您如何通过 ID 以外的方式获取 RESTful 资源?

ruby-on-rails - 如何将应用程序从 Ruby 2.0.0 降级到 1.9.3

tomcat - Azure Web应用程序Tomcat 8配置

javascript - 使用 PHP 将 mySql 数据加载到 HTML 文本框中

c# - Asp :net MVC 3: @Html. EditorFor 模板中模型的子集合?

ruby-on-rails - Rails 数据库,为什么在开发和生产中使用相同的 DBMS?

javascript - Rails 为元素动态分配 id 并在 js 函数中选择它们

javascript - 建立了无需 SSL 的安全注册和身份验证的 javascript 解决方案