レールにはbreak文がありますか?Rails - Breakステートメント?
私はかなり複雑なIF文を持つコントローラを書いています。 Sumで私がしたいのは次のようなものです:
IF!これらの変数はすべて存在し、nilではありませんか? BREAKとBEC何かを継続していないが、エラーメール
ブレークが可能ですを送信 ELSE ELSE
のIF XXX =「の はすべてこのようなものを ENDを行うadsasd場合は間違っていましたか?
レールにはbreak文がありますか?Rails - Breakステートメント?
私はかなり複雑なIF文を持つコントローラを書いています。 Sumで私がしたいのは次のようなものです:
IF!これらの変数はすべて存在し、nilではありませんか? BREAKとBEC何かを継続していないが、エラーメール
ブレークが可能ですを送信 ELSE ELSE
のIF XXX =「の はすべてこのようなものを ENDを行うadsasd場合は間違っていましたか?
すべての変数がいつ利用可能になるのかわかりませんが、コントローラでチェックをしたいときは、通常はbefore_filterコールバックを使用して行います。たとえば:
class YourController
before_filter :check_if_variables_exist
def show
#prepare for render view
end
private
def check_if_variables_exist
unless @your_variable.nil?
#Do what you want
render :nothing => true
end
end
は、これがないと、要求はYourControllerでアクションショーに来るとき、それは最初のプライベートメソッドcheck_if_variables_existを呼び出すということです。 @your_variableがnilならrender:nothing => trueになり、filter_chainは停止し、アクションショーは決して呼び出されません。しかしyour_variableがnilでなければ、何もせずにメソッドが終了し、コントローラーはいつものようにshowショーを呼び出します。
事前に確認したいことはすべて、別のbefore_filterコールバックに入れることができます。あなたはコントローラ内のすべてのアクションのチェックをしたくない場合は、それは次のように指定することができると:私の意見で
class YourController
before_filter :first_check, :only => [:index, :show]
before_filter :second_check, :only => [:show, :edit]
、これはそれを行うには、「レール」方法です。
これはすばらしいクリーンなアイデアです!私は本当にそれが好きです。ありがとうございました – AnApprentice
ルビーのreturn
ステートメントはあなたが探しているものです。しかし...
私はあなたのアプリケーションについて何も知らず文
IFかなり複雑なを持っているコントローラを書いているが、これはBIG赤旗です。コントローラは、複雑な論理の束を持つ場所ではありません。 RESTfulなデザインパターンを使用している場合(そしてそうしない理由はほとんどありません)、コントローラは非常に軽量であり、ほとんどロジックを含んでいないはずです。モデルはビジネスロジックが属する場所です。ロジックを分離し、アプリケーションを簡素化し、テストを容易にします。
@Alexレンダリングは戻り値と同じではなく、現在のメソッドを終了しません。 –