【问题标题】:Finding the current render MIME type from a Rails helper从 Rails 助手中查找当前的渲染 MIME 类型
【发布时间】:2017-02-14 16:06:44
【问题描述】:

我正在寻找一种方法来从帮助程序中找到我当前正在执行的渲染类型。主要是做这样的事情:

# some_helper.rb
def url_to_faq
  if plain_text_render
    ...
  else
   # HTML
  end
end

我们在我们正在使用的 gem 中为 render 使用了替代方法,但这很糟糕。在 Rails 4 或 Rails 5 中是否有一些官方方法可以获取渲染器元数据?

【问题讨论】:

    标签: ruby-on-rails ruby actionview


    【解决方案1】:

    我想你可以在这里使用presenter。

    在控制器中:

    @link_presenter = LinkPresenter.new(format: request.format.symbol, view: view_context)
    

    链接演示者类:

    class LinkPresenter
      def initialize(format:, view:)
         @format = format
         @view = view
      end
    
      def url_to_faq
        if format == :html
          ...
        else
          ...
        end
      end
    end
    

    然后在视图中:

    @link_presenter.url_to_faq
    

    通过将 view_context 传递给演示者,您可以访问查看助手。如果不需要,则将其丢弃。

    关于演示者的好文章:Presenters in Rails by Nithin Bekal

    【讨论】:

    • 不,这绝对不是我想要的,抱歉。我知道这样做的“干净”方法是显式依赖注入,但我正在寻找自省。
    • 等等...request.format.symbol!这就是我要找的,谢谢!
    猜你喜欢
    • 2011-03-20
    • 2010-09-22
    • 1970-01-01
    • 1970-01-01
    • 2012-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多