0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Rails ajax 処理の場合 ApplicationController に書いてある 共通処理 を スキップ したい

Posted at

何がしたい?

全ページ共通で行いたい処理って、ApplicationControllerのbefore_actionに書いたりするじゃないですか?
例えば、今みんなの右上にあるQiitaの通知なんかもおそらくApplicationControllerのbefore_actionで件数やコンテンツをセットしているのではないかな。(これは妄想なので真相は知らんけどね)

ApplicationControllerのbefore_actionって何も特別な記述をしていない場合、
Controllerに入る前に確実に通ってしまうのですが、そうなるとajaxなどの処理時にも通ることになるやん?
そうなると割と重い処理をbefore_actionに書いている場合ちょっとしたajax処理でも激オモになってしまうんですわ:poop:

例えばこんな記述していたらね

application_controller.rb

before_action :kuso_omo

def kuso_omo

  sleep(1000)

end

解決方法

ajaxの場合だけ飛ばすって言われてもパラメーター探ってみても何もヒントがなかったんやけど、
respond_to使ったらなんとかできることがわかった。

application_controller.rb

before_action :kuso_omo

def kuso_omo

  respond_to do |format|
    format.html
    format.js { return }
  end

  sleep(1000)

end

もっとスマートな書き方を知っている人は教えてね:relaxed:

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?