Rails:检查模板引擎中的数组



我正在维护一个5.2 rails应用程序,我在模板中遇到了以下两行:

<%
clazzes = Clazz.joins(:staffs).includes(clazz_students: :student).where(staffs: { id: @staff.id })  
all_students = clazzes.flat_map { |clazz| clazz.clazz_students.map(&:student) }
%>

我想以某种方式检查all_students,看看阵列中有什么。类似控制台日志的东西。关于我该怎么做,有什么建议吗?

您可以使用debug视图辅助对象。请注意,您必须通过将<%更改为<%=来更改为输出模式。

<%=
clazzes = Clazz.joins(:staffs).includes(clazz_students: :student).where(staffs: { id: @staff.id })  
all_students = clazzes.flat_map { |clazz| clazz.clazz_students.map(&:student) }
debug(all_students)
%>

旁注:加载和转换数据通常在控制器中完成,甚至在可能的情况下在模型中完成。我认为,视图中的这些行是一种代码气味,会使视图更难维护,也可能更难重用。我建议将这些行移到控制器方法中,只调用视图中的实例变量,如下所示:

# in the controller method:
@clazzes = Clazz.joins(:staffs).includes(clazz_students: :student).where(staffs: { id: @staff.id })  
@all_students = clazzes.flat_map { |clazz| clazz.clazz_students.map(&:student) }
# in the view
<%= debug(@all_students) %>

最新更新