我刚开始开发我的第一个Phoenix应用程序,遇到的问题是,每个控制器中的每个操作都有一些共同的代码行,我希望将它们分离出来。它们从多个Ecto Models中获取数据并将其保存到变量中供使用。
在Rails中,我可以简单地定义一个方法,并在控制器中使用before_filter
调用它。我可以从@variable
中访问结果。我知道使用Plugs
是关键,但我不清楚如何实现这一点,更具体地说:
- 从
Plug
中访问请求params
- 使变量在操作中可访问
作为参考,这是我正在尝试完成的Rails版本:
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
谢谢!
assign(conn, :something, :some_data)
。 - Chris McCord