所以凤凰有一些插头我想把它放入base_controller.ex混合中,但即是。
plug :xxx when action in [:xxx]
然而,当我将其添加到__using__
宏时,动作似乎是未定义的,即
defmacro __using__(opts) do
quote do
use XXX.Web, :controller
plug :xxx when action in [:xxx]
end
end
结果:
unknown variable action or cannot invoke local action/0 inside guard
似乎行动来自use XXX.Web, :controller
所以我不确定为什么它是未定义的。这里有什么想法吗?
克里斯
答案 0 :(得分:2)
错误消息可能更好,但这似乎是由于宏卫生,它在将action
发送到plug
之前重命名action
。我们可以使用Kernel.var!/1
禁用变量quote do
use XXX.Web, :controller
plug :xxx when var!(action) in [:xxx]
end
的卫生。以下适用于我:
|| exit