Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 从Rails帮助程序中查找当前呈现MIME类型_Ruby On Rails_Ruby_Actionview - Fatal编程技术网

Ruby on rails 从Rails帮助程序中查找当前呈现MIME类型

Ruby on rails 从Rails帮助程序中查找当前呈现MIME类型,ruby-on-rails,ruby,actionview,Ruby On Rails,Ruby,Actionview,我正在寻找一种方法来查找当前正在从帮助器执行的渲染类型。主要是做这样的事情: # some_helper.rb def url_to_faq if plain_text_render ... else # HTML end end 在我们正在使用的gem中,我们已经为渲染使用了一个变通方法覆盖,但这太糟糕了。在Rails 4或Rails 5中,是否有一些获取渲染器元数据的官方方法?我认为您可以在这里使用presenter 在控制器中: @link_presenter

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

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

在我们正在使用的gem中,我们已经为
渲染
使用了一个变通方法覆盖,但这太糟糕了。在Rails 4或Rails 5中,是否有一些获取渲染器元数据的官方方法?

我认为您可以在这里使用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
通过将视图上下文传递给演示者,您可以访问视图帮助器。如果不需要,就放下它


关于主持人的文章不错:

不,这绝对不是我想要的,对不起。我知道“干净”的方法是显式的依赖注入,但我想反省一下。等等<代码>请求.格式.符号
!这就是我要找的,谢谢!