I've just started working on my first Phoenix app, and the issue is that I have some common lines of code in every action in my controller, that I would like to separate out. They fetch data from multiple Ecto Models and save them to variables for use.
In Rails, I could simply define a method and call it using before_filter in my controller. I could access the result from an @variable. I understand that using Plugs is the key but I'm unclear on how to achieve this, more specifically:
- Accessing the request 
paramsfrom aPlug - and making the variables accessible in actions
 
As a reference, this is the rails version of what i'm trying to do:
class ClassController < ApplicationController
    before_filter :load_my_models
    def action_one
        # Do something with @class, @students, @subject and @topics
    end
    def action_two
        # Do something with @class, @students, @subject and @topics
    end
    def action_three
        # Do something with @class, @students, @subject and @topics
    end
    def load_my_models
        @class    = Class.find    params[:class_id]
        @subject  = Subject.find  params[:subject_id]
        @students = @class.students
        @topics   = @subject.topics
    end
end
Thanks!
                        
You can indeed achieve this with a
Plugand Plug.Conn.assign.Remember to add the plug declaration before your action plug, as they are executed in-order.