【Rails】コントローラの中で途中で抜ける方法


Rails controller

付け焼き刃の知識でRailsを使ったスマホアプリ向けAPIを開発中なのですが、Controller内の一つのアクション内でViewを出し分ける方法がよく分からなかったので、適当に書いたら怒られた件。


やりたかったこと

非常にシンプル。

たとえば def create とか何かしらのコントローラ内のアクション中で 条件を設け、render でクライアントに返すJSONのテンプレート(まぁviewでもいいんですが)を出し分けたかった。

さいしょ、素直に ifの中にもrenderifの外にもrenderを書いていたところ。。。

AbstractController::DoubleRenderError (Render and/or redirect were called multiple times in this action. Please note that you may only call render OR redirect, and at most once per action. Also note that neither redirect nor render terminate execution of the action, so if you want to exit an action after redirecting, you need to do something like “redirect_to(…) and return”.):

と、怒られました。

DoubleRenderError というErrorを見るに、複数のRenderを同一アクションの中に書いてはいけないようです。

では、どうしたら別々のテンプレートを返せるのでしょうか・・?

and return

と、書くと良いそうだ。

if XXXX
  render 'iseebi'  and return 
else
  render 'kurumaebi' and return
end

XXX
render 'index'

ちょっとこの例はいけてないですが、とりあえずand returnでコントローラから抜けれるみたい。

書いていて思ったんですが、次の行にreturnと書いても大丈夫そうな気がしてきました。

おわり

2014-03-15 | Posted in RailsNo Comments » 


関連記事

Comment





Comment



*