对于上下文,我试图做的是让一些上下文对某些方法可用,这样我就不必一直将它作为参数传入,但这不再是我的目标。现在我的目标是了解 Ruby 作用域是如何工作的。
所以: 我正在使用 active_admin。在某些资源控制器中,例如companies.rb,我可以做这样的事情:
sidebar 'Related', only: [:show, :edit, :new] do
# debugger
table do
tr { th { navigate_to_related :users, company } }
tr { th { navigate_to_related :teams, company } }
tr { th { navigate_to_related :groups, company } }
end
end
navigate_to_related
是我自己的代码,这里不重要。关键是它需要显示的“公司”对象。
我想做的,最好的情况是,not必须传入
company
,以某种方式让它“在上下文中”。所以我首先想到的是了解“公司”的实际来源。它在上述代码的范围内可用,但我没有声明它,例如做|公司|那么它是从哪里来的呢?
然后我开始疑惑,
controller
、action_name
等方法(或者是变量?)是从哪里来的呢?这些对我来说几乎无处不在;它们实际存在于什么范围内,为什么我可以在侧边栏范围内使用该范围,以及使我可以使用这些东西的任何机制,我可以使用该机制使 company
对 navigatge_to_related
可用吗? (一旦我理解了这个机制,我就可以判断这是不是一个好主意。)
我在调试器里翻来覆去,试验调试器的检查命令,还有
binding
、binding.caller
、class.instance_methods
等,想弄明白事情的来龙去脉,但就是弄不明白它的。有帮助吗?
谢谢!