2016-06-14 16 views
6

return render 'edit'render 'edit' and returnの書かれている機能に違いはありますか?両方の構文を安全に使用できますか?"return render" vs "render ... and Rails"返信

return renderの構文はやや簡潔ですが、render and returnは公式にここにAvoiding Double Render Errorsと提唱されています。

return renderはレンダリングメソッドが返す値を返し、render and returnはコントローラメソッドからnilを返します。

+0

他のトリッキーなことは、 'render and return'を使うことです。' render && return'をしないでください。あなたのRubocopはそれを好まないかもしれません。 – LYu

答えて

8

あなたが最後にあなたの質問に答え:

リターンはrenderメソッドの戻り値をレンダリングし、 レンダリングどのような値を返すだろうと戻り、コントローラメソッド

重要なことから、nilを返しますです - コントローラアクション内の他のコードが実行されないようにして、ダブルレンダリングエラーから保護します。私は何も実際にコントローラのアクションの戻り値をリッスンしているとは思わない。

私が推薦する方法がand returnである理由を推測しなければならない場合は、それは散文のように読むことができます。これはルビーの方法です。つまり、「レンダリングカテゴリを返す」ではなく、「レンダリングカテゴリと戻り値」文のように聞こえます。

2

最後のメソッドの行に関連する結果が返されます。あなたは全体のメソッドを待たずに結果を返したい場合は は、キーワードと値を返すことができreturn

例:

def hello1 
    'I m first' # executes 
    'I m second' # result 
end 

def hello2 
    return 'I m first' # result 
    'I m second' # this line will be never executeed 
end 

puts hello1 
# => 'I m second' 
puts hellow 
# => 'I'm first' 

そして

しかしrender方法が書かれているのと同じ方法で動作しrender方法(結果はありますが、結果はtrueです)、renderの後にreturnを呼び出してください。

関連する問題