2017-02-14 9 views
0

私はヘルパーから現在実行中のレンダータイプを見つける方法を探しています。主にこのような何かを行うに:Railsヘルパーから現在のレンダーMIMEタイプを見つける

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

を私たちは使用している宝石にrenderの回避策のオーバーライドを使用しましたが、それは総です。 Rails 4またはRails 5のレンダラーメタデータを取得するための正式な方法はありますか?

答えて

0

私はここで発表者を使うことができると思います。コントローラで

@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

+0

いや、それは私は申し訳ありませんが、後にね何間違いではありません。私はこれを行うための "クリーンな"方法は明示的な依存性注入であることを知っていますが、代わりにイントロスペクションを探しています。 – Julik

関連する問題