1

コントローラーとビューを備えたエンジンを開発していますが、ビューをオーバーライドできるようにしたいと考えています (これは、Rails::Engine がapp/viewsメイン アプリからエンジンのビュー パスに自動的に付加することでこれを可能にするため、十分に単純です)。 . ただし、オーバーライドされたビューがエンジンからのビューを参照できるようにしたい-たとえば、エンジンのビューをアプリのカスタムのもので「ラップ」したい:

# main_app/app/views/engine/template.haml

# ... custom stuff here
= render template: 'engine/template'
# ... custom stuff here

問題は、一度オーバーライドしたエンジンのビューを参照する方法が見つからないことです...可能ですか?

4

1 に答える 1

1

エンジンのテンプレート ファイルのフル パスを指定して、ファイルをレンダリングしてみてください。

  # in view
  <%= engine_view {|f| render file: f} %>

  # in helper
  def engine_view(&b)
     yield eval("__FILE__.gsub(Rails.root.to_s, YourEngine::Engine.root.to_s)",b.binding) 
  end
于 2013-10-01T21:27:37.567 に答える