部分变量会覆盖辅助方法吗?
Do partial variables override helper methods?
我有一些调用 current_language
的辅助方法,有时我会在 local_assigns
中发送 current_language
。
所以我想通过 local_assigns
的 current_language
分配我的部分变量,以防它被发送。
但是我发现了一些奇怪的东西,在下面的代码中:
<%
binding.pry
x = 4
current_language = local_assigns[:current_language] || current_language
%>
调试时第 3 行 current_language
等于 nil
甚至在覆盖之前。
我希望它在被覆盖之前仍然等于辅助方法。
所以这是怎么回事?
这是语言的有据可查的功能。变量有点提升。使用此代码明确告诉解析器变量在哪里以及方法调用在哪里:
# ⇓⇓
current_language = local_assigns[:current_language] || current_language()
我有一些调用 current_language
的辅助方法,有时我会在 local_assigns
中发送 current_language
。
所以我想通过 local_assigns
的 current_language
分配我的部分变量,以防它被发送。
但是我发现了一些奇怪的东西,在下面的代码中:
<%
binding.pry
x = 4
current_language = local_assigns[:current_language] || current_language
%>
调试时第 3 行 current_language
等于 nil
甚至在覆盖之前。
我希望它在被覆盖之前仍然等于辅助方法。
所以这是怎么回事?
这是语言的有据可查的功能。变量有点提升。使用此代码明确告诉解析器变量在哪里以及方法调用在哪里:
# ⇓⇓
current_language = local_assigns[:current_language] || current_language()