Railsで他のControllerのactionを呼び出す
Railsで他のControllerのactionを呼び出す
privateを使うと、他のクラスから呼び出されないようにと出てくる、、うむ、そもそも他のクラスからコントローラから呼び出した経験がないぞ!どういうことだ!!ということで他のコントローラからアクションを呼び出して見ます。
renderでやる場合
元になるコントローラ
users_controller.rb class UsersController < ApplicationController def index @users = User.all end end
呼び出すやつ
hoge_contoller.rb class HogeController < ApplicationController def users @users = User.all render template: 'users/index' end end
templateオプションは別のコントローラから呼び出す際に利用します。
だが、これだと変数が多い時にコントローラの処理が冗長になるのがきになる
元になるコントローラを親クラスにしてしまう
hoge_contoller.rb # 親classをUsersControllerに class HogeController < UsersController def users # 親のindexを呼び出す public_method(:index).super_method.call end end