从 Rails 助手查找当前呈现 MIME 类型

Finding the current render MIME type from a Rails helper

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

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

我们在我们正在使用的 gem 中使用了 render 的解决方法覆盖,但它很糟糕。在 Rails 4 或 Rails 5 中是否有一些官方方法来获取渲染器元数据?

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

在控制器中:

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

Link 主持人 class:

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