[英]Cant use plug in using macro elixir
因此,phoenix我想在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
所以我不确定为什么未定义。 这里有什么想法吗?
克里斯
该错误消息可能会更好,但这似乎是由于宏卫生所致,该宏在将其发送到plug
宏之前正在重命名action
。 我们可以使用Kernel.var!/1
对可变action
禁用卫生action
。 以下对我有用:
quote do
use XXX.Web, :controller
plug :xxx when var!(action) in [:xxx]
end
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.