从 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
我正在寻找一种方法来查找我当前正在从助手执行的渲染类型。主要是做这样的事情:
# 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