ActiveAdmin 跳过 action_item 与 next 与 proc
ActiveAdmin skipping action_item with next versus proc
在 ActiveAdmin 中有两种跳过项目的方法gem
action_item :user_reviewed, only: %i[show] do
next unless resource.individual?
....
end
对比记录的一个:
action_item :user_reviewed, only: %i[show], if: proc{ resource.individual? } do
....
end
proc 和 next 都将跳过创建 action_item 并转到下一个,但从技术的角度来看(不是文档这么说),哪个性能更好,更重要的是 -为什么?
在我的理解中,next 更快,因为它只是跳到下一个元素,与 proc 相比,这意味着调用一个函数。
使用 proc,您可以延迟执行以渲染时间。如果显示 action_item 的条件取决于请求周期中的数据(获取参数、会话 cookie、登录 admin_user,或者可能是索引页面中的活动范围),您可以使用过程。
这会导致服务器启动时出错:
action_item :user_reviewed, only: %i[show], if: params[:scope] == 'somescopename'
Activeadmin 在服务器启动时注册资源,并且不存在请求周期数据。需要时您可以使用:
action_item :user_reviewed, only: %i[show], if: proc {params[:scope] == 'somescopename' }.
这对收集过滤器也很有帮助。有时它们需要在渲染时填充数据,而不是在 rails 服务器启动时。检查 https://activeadmin.info/3-index-pages.html 并搜索 proc
.
在 ActiveAdmin 中有两种跳过项目的方法gem
action_item :user_reviewed, only: %i[show] do
next unless resource.individual?
....
end
对比记录的一个:
action_item :user_reviewed, only: %i[show], if: proc{ resource.individual? } do
....
end
proc 和 next 都将跳过创建 action_item 并转到下一个,但从技术的角度来看(不是文档这么说),哪个性能更好,更重要的是 -为什么? 在我的理解中,next 更快,因为它只是跳到下一个元素,与 proc 相比,这意味着调用一个函数。
使用 proc,您可以延迟执行以渲染时间。如果显示 action_item 的条件取决于请求周期中的数据(获取参数、会话 cookie、登录 admin_user,或者可能是索引页面中的活动范围),您可以使用过程。
这会导致服务器启动时出错:
action_item :user_reviewed, only: %i[show], if: params[:scope] == 'somescopename'
Activeadmin 在服务器启动时注册资源,并且不存在请求周期数据。需要时您可以使用:
action_item :user_reviewed, only: %i[show], if: proc {params[:scope] == 'somescopename' }.
这对收集过滤器也很有帮助。有时它们需要在渲染时填充数据,而不是在 rails 服务器启动时。检查 https://activeadmin.info/3-index-pages.html 并搜索 proc
.