8

わかりましたので、アプリケーション コントローラーにヘルパー メソッドがあります。

def run_test(test_name)
  #computation stuff
  render :partial => test_name
end

そして、私はそれをビューで次のように呼び出します:

<%= run_test("testpartial") %>

そして、それは1つだけでOKをレンダリングします(ただし...レンダリングパーシャルは、部分的なコンテンツだけではなく配列を返すようです?)が、run_testヘルパー呼び出しをビューに2回配置すると、二重レンダリングエラーが発生します。パーシャルで発生するべきではありません。

何か案は?

4

3 に答える 3

9

renderコントローラーとrenderビューでは、方法が異なります。コントローラーは最終的renderにビューを呼び出しますが、コントローラーのrenderメソッド自体は一度だけ呼び出されることを想定しています。次のようになります。

# Check for double render errors and set the content_type after rendering.
def render(*args) #:nodoc:
  raise ::AbstractController::DoubleRenderError if response_body
  super
  self.content_type ||= Mime[formats.first].to_s
  response_body
end

複数回呼び出された場合に発生することに注意してください。

を呼び出すと、コントローラーの のバージョンと同じ方法で使用されることを意図していないhelper_methodビューにプロキシが与えられます。これは、コントローラーのバージョンと異なり、パーシャルなどをレンダリングするために繰り返し呼び出されることが期待されます。renderActionView

于 2011-09-03T03:29:45.800 に答える
-2

render_to_stringビューヘルパーでメソッドを使用してみることができます

render_to_string :partial => test_name, :layout => false
于 2011-09-03T04:02:44.567 に答える