私はmethod1
を持っています。これはparamsに応じて他のメソッドを呼び出し、jsonを返します。これらのメソッドの1つは、特定のユーザーが存在するかどうかを確認します。ユーザーが存在しない場合、メソッドはJavaScriptアラートを表示する必要があります。最初は、レンダリングが複数回呼び出されたというエラーが発生しました(これは正しい)。そこで、break
を追加しようとしましたが、invalid break
というエラーが発生しました。だから私はreturn
を試しましたが、私はまだRender and/or redirect were called multiple times in this action
を取得します。 method2にあるときにmethod1から抜け出すことができるので、method2のレンダリングだけが呼び出されます。Ruby/Railsはネストされたメソッドから抜け出す
def method1
data = case params["foobar"]
when "case1"
methodxy
...
else
method2
end
render json: data
end
def method2
if user.exists?
return {...}
else
render(
html: "<script>alert('Unknown user!')</script>".html_safe,
layout: 'application'
)
return
end
end
いずれかの方法があるでしょう状況は、複数のレンダリング時間を呼び出します。
最終的な結果は、の線に沿って何かを見ることができます。だから、 'render json:data'をjsonデータをレンダリングしたくない別の条件で追加する必要があります! – hyphenbash
可能な複製https://stackoverflow.com/questions/26446375/is-it-possible-in-rails-to-check-whether-a-redirect-or-render-had-already-been-i – spickermann
@hyphenbashそれで、メソッド1から抜け出す方法はありません。 – loelu